1.1多态概述
同一个对象,在不同时刻表现出来的不同形态
1.2多态的前提和体现
- 有继承/实现关系
- 有方法重写
- 有父类引用指向子类对象
(1)创建三个类,Animal为cat的父类,AnimalDemo为测试类,父类中有一个eat方法
(2)cat继承Animal并且重写父类方法
(3)父类引用指向子类对象
(4)运行结果
2.1多态中成员访问特点
- 成员变量:编译看左边 执行看左边
- 成员方法:编译看左边 执行看右边
为什么成员变量和成员方法不一样?
成员变量没有重写,成员方法有重写
(1)父类AnimalA中有一个成员变量一个eat方法
(2)子类有两个成员变量自带一个playGame方法并且重写父类eat方法
(3)访问成员变量,调用weight报错,通过多态形式访问成员变量访问的是父类
(4)通过多态形式调用方法,输出猫吃鱼
3.1多态的好处和弊端
好处:提高了程序的扩展性
具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作
弊端:不能使用子类特有的功能
4.1多态中的转型
- 向上转型
从子到父 父类引用指向子类对象
- 向下转型
从父到子 父类引用转为子类对象
(1)AnimalC为父类,其中有一个方法为eat
(2)CatC继承AnimalC,其中有一个playGame方法 并重写父类方法
(3)将父类对象强转为子类对象(向下转型)这样就可以使用子类中特有的方法了