面向对象特征之三:多态性
1.理解多态性:可以理解为一个事物的多种形态。
2.何为多态性:对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)
3.多态的使用:虚拟方法调用。有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。
总结:编译看左边;运行看右边。
4.多态性的使用前提:①类的继承关系②方法的重写
5.对象的多态性,只适用于方法,不适用于属性(编译和运行都看左边)
class Base {
int count= 10;
public void display() {
System. out. println(this. count) ;
}
}
class Sub extends Base {
int count = 20;
public void display() {
System. out . println(this. count) ;
}
}
public class Polymorphism {
public static void main(String[ ] args) {
Sub s = new Sub();
System.out.println(s. count);//20
s.display();//20
Base b = s;//多态性
//==:对于引用数据类型来讲,比较的是两个引用数据类型变量的地址值是否相同
System.out.println(b == s);//true
System.out.println(b. count);//10,因为多态性适用方法,不适合属性,所以调用的是父类
//的count
b.display();//20,这里调用的是方法,所以体现多态性,调用的是子类的count
}
}
运行结果: