多态
3.1 多态概述:
同一个对象,在不同时刻表现出来的不同形态
举例:
- 可以说猫是猫:猫 cat = new 猫();
- 可以说猫是动物:动物 animal = new 猫();
多态的前提和体现:
- 有继承/实现关系
- 有方法重写
- 有父类引用指向子类对象
3.2 多态中成员访问特点:
- 成员变量:编译看父类是否有,执行看父类
- 成员方法:编译看父类是否有,执行看子类
- 成员变量和成员方法访问不一致是因为 “成员方法有重写,成员变量没有重写”
3.3 多态的好处和弊端:
好处:提高程序扩展性。定义方法时,使用父类型作为参数,将来使用时,使用具体子类型参与操作
弊端:不能访问子类特有的功能。
3.4 多态中的转型:
向上转型:从子到父,父类引用指向子类对象
Animal a = new Cat();
向下转型:从父到子,父类引用转为子类对象
Cat c = (Cat)a;