Java中多态的概念

来源:互联网 发布:linux cst破解 编辑:程序博客网 时间:2024/06/06 16:56

做一个备注:之前不知道写还可以写代码片,今天才知道,留个纪念:2015年5月15日
多态性:指同一事物具有不同的表现方式。
例如一只小狗,它既是动物类,又是狗类,这便是多态性的一种体现。
我们创建一个动物类作为动物的父类:

public class Animals {    String name = "花花";    int age = 17;    int nums = 1;    public Animals() {    }    void show(){        System.out.println("我是动物类,我的名字是:"+name+"我的年龄是:"+age);    }    void fell(){        System.out.println("我是有感情的");    }}

然后我们创建一个狗类继承自动物类:

public class Dog extends Animals {    String breed = "牧羊犬";    String color = "白色";    int age = 10;    void show(){        System.out.println("我是狗类,我的名字是:"+name+" \t我的年龄是:"+age+" 我的品种是:"+breed+" 我的颜色是:"+color);    }    void hungry(){        System.out.println(age);    }}

最后我们再写一个测试类来测试多态性。
第一步,简单测试成员变量:

public static void main(String[] args) {    System.out.println(new Dog().age+"\t"+new Dog().nums);    System.out.println(new Animals().age+"\t"+new Animals().nums);}
输出结果:10  117  1

说明:成员变量如果相同则父类的成员变量被隐藏,没有的话子类继承父类的成员变量
第二步,简单测试成员方法:

public static void main(String[] args) {    new Dog().show();    new Dog().fell();    new Animals().show();}
输出结果:    我是狗类,我的名字是:花花 我的年龄是:10 我的品种是:牧羊犬 我的颜色是:白色我是有感情的我是动物类,我的名字是:花花  我的年龄是:17

说明:
方法里面如果子类和父类有同样的方法的话,则父类的方法会被子类的方法覆盖。没有的话,就会被继承。
第三步:父类变量引用子类对象

public static void main(String[] args) {    Animals a = new Dog();    a.show();    System.out.println(a.age);}
输出结果:我是狗类,我的名字是:花花 我的年龄是:10 我的品种是:牧羊犬 我的颜色是:白色17

说明:
虽然是父类变量,但实例化子类的时候它本身的方法便被子类给覆盖了,因此会输出子类的方法
而成员变量则只是被隐藏了,不会被覆盖的,因此仍然输出父类的成员变量。
说是覆盖了,其实也算是隐藏,我们依旧可以通过super关键字来调用父类的成员变量和成员方法。
第四步:父类变量引用子类对象

public static void main(String[] args) {    Animals animals = new Dog();    Dog dog = (Dog)animals;    System.out.println(dog.age);}
输出结果:10

以上就是多态的一些例子,加油。

0 0
原创粉丝点击