1.多态
1.1 定义
简单来说,多态(polymorphism)是具有表现多种形态的能力的特征.
更专业的说法:同一个实现接口,使用不同的实例而执行不同的操作.
1.2 为什么要使用多态
多态不仅可以减少代码量,还可以提高代码的可扩展性和可维护性.
2.子父类型的转换方式
2.1 子类到父类的转换(向上转型),又称为自动类型转换
子类转换成父类时的规则:
将一个父类的引用指向一个子类对象,称为向上转型(upcasting),自动类型转换
此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法
此时通过父类引用变量无法调用子类特有的方法
2.2 父类到子类的转换(向下转型),又称为强制类型转换
定义:
将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型.此时必须进行强制类型转换
强制类型转换语法:
父类 对象a=(父类的子类)对象b;
3.instanceof运算符
语法:
对象 instanceof 类或接口
作用:
该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为true或false.
使用方法:
类型转换之前通过instanceof运算符检查对象的真实类型,再进行相应的强制类型转换,这样就可以避免类型转换异常,从而提高代码的健壮性.
4.使用父类作为方法形参实现多态
使用父类作为方法的形参,是java实现和使用多态的主要方式之一.
子类或父类作为实参.
5.使用父类作为方法返回值实现多态
使用父类作为方法的返回值,是java中实现和使用多态的另一种方式.
此方法需要在方法里用instanceof判断属于哪一种子类对象,并进行强制转换,再返回
6.实现多态的三个条件
继承的存在(继承是多态的基础,没有基础就没有多态)
子类重写父类的方法(多态下调用子类重写后的方法)
父类引用变量指向子类对象(子类到父类的类型转换)
7.实现多态的思路:
编写继承关系的父类和子类
子类重写父类的方法
使用父类的引用指向子类的对对象