做一个备注:之前不知道写还可以写代码片,今天才知道,留个纪念: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 1
17 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
以上就是多态的一些例子,加油。