对象的多态性:父类的引用指向子类的对象。
person p = new Man();
【父类】 【子类】
男人只是人的一种,所以人是父类,男人是子类。但是不存在继承关系的两件事物不可以。比如说,人不可以是大黄(一条狗)的父类。
子类和父类当通过变量名去调用父类中同名同参数的方法时,编译时认为调用的是父类中声明的方法。实际运行时,运行的是子类重写的方法。
一个子类只可以有一个直接父类,一个父类可以有任意个子类。
直接父类的父类,叫做间接父类,也是父类。
子类可以获取父类中private的权限和方法。
多态存在的三个条件·必须要有继承或者实现的关系
·必须要有要有方法重写
· 必须要有父类引用指向子类对象
·upcasting向上转型:将子类对象直接赋值给父类引用
·向上转型不需要强制类型转换
·向上转型猴父类不能太调用自己的子类方法
·父类引用或调用的是子类的方法
·downcasting向下转型:将指向子类对象的父类引用赋值给子类引用
多态成员的访问特点 成员变量·需要强制类型转换
·如果引用的是指向的子类对象那么在向下转型的过程中是安全的,即编译不会出错。
·如果父类引用的对象是父类本身,在向下转型过程中是不安全的,运行会出错。【可以通过instanceof来避免】
编译看父类,运行看父类
成员方法编译看父类,运行看子类
多态的作用消除了类之间的耦合关系,大大提高了程序的可扩展性和维护性。



