一、概述
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作。
多态性是对象多种表现形式的体现。
同一个事件发生在不同的对象上会产生不同的结果。
多态的前提条件
继承或者实现【二选一】
方法的重写【意义体现:不重写,无意义】
父类(接口)引用指向子类对象【格式体现)】
父类类型 变量名 = new 子类对象;
变量名.方法名();
Fu f = new Zi();
f.method();
二、多态中成员访问特点
- 成员变量:编译看左边,执行看左边,看父类中是否有这个变量,如果有编译成功,否则编译失败
- 成员方法:编译看左边,执行看右边,看父类中是否有这个方法,如果有编译成功,否则编译失败
三.多态的好处和弊端
- 多态的好处:提高了程序的扩展性
- 具体体现:定义方法的时候,使用父类类型作为参数,将来在使用的时候,使用具体的子类类型参与操作
- 消除类型之间的耦合关系
- 可替换性
- 可扩充性
- 接口性
- 灵活性
- 简化性
- 多态的弊端:不能使用子类的特有功能
四.引用类型转换
- 为什么要转型
- 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误。也就是说,不能调用子类拥有,而父类没有的方法。编译都错误,更别说运行了。
- 向上转型
- 当父类引用指向一个子类对象时,便是向上转型;
- 多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的。
-
- 父类类型向子类类型向下转换的过程,这个过程是强制的
- 一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制类型转换的格式,便是向下转型。
- 转型的异常
- instanceof关键字
- 给引用变量做类型的校验
- 变量名 instanceof 数据类型
- 如果变量属于该数据类型,返回true。
- 如果变量不属于该数据类型,返回false。