多态
2018-12-09 本文已影响0人
想飞的键盘手
-
多态概述
事物存在的多种形态
-
多态前提
a: 要有继承关系
b:要有方法重写
c:要有父类引用指向子类对象
- 多态(动态绑定)
成员方法调用子类
成员变量调用父类
成员变量 编译看左边 运行看左边
方法(非静态) 编译看左边 运行看右边
(编译的时候检查父类有没有改方法 运行的时候走子类的方法 )
- 静态方法还是走父类的 相当于类名.类方法 (无法实现动态绑定)(自己是自己的 没有重写静态方法的)
向上转型
父类引用指向子类对象就是向上转型
向下转型(强制转换)
先有向上转型才有向下转型
捕获.PNG
多态的好处和弊端
多态的好处
- 提高了代码的维护性(继承保证)
- 提高了代码的扩展性(多态保证)
实例
可以当做形式参数,可以接收任意子类对象
弊端
不能使用子类特有的属性和行为()
很少在创建对象的时候直接使用父类引用指向子类对象
要使用子类特有方法需 判断类型 向下强转
boolean result = object instanceof class
//判断 instanceof 前边的引用是否是后边的数据类型
//还可以判断子父类的所属关系
一般都是父类定义了该方法 子类重写了该方法 通过动态绑定直接使用子类方法