一、多态的概念
多态(Polymorphism )按字面的意思就是“多种状态”,是面向对象的序设计语言最核心的特征。
具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。
多态建立在继承和封装的基础上。
二、多态的分类
编译时多态(设计时多态)∶方法重载。
运行时多态:JAVA运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态。
三、多态的必要条件如下:
满足继承关系
父类引用指向子类引用
注意:
1、父类引用指向子类实例时,可以调用子类重写父类的方法以及直接继承父类的方法,无法调用子类特有的方法。
2、静态static方法属于特殊情况,静态方法只能继承,不能重写。调用的时候用谁的引用,则调用谁的版本。
四、多态中的向上类型转型和向下类型转型
向上类型转换(Upcast)将子类型转换为父类型:自动转换
对于向上的类型转换,不需要显示指定,即不需要加上前面的小括号和父类类型名。
向下类型转换(Downcast )将父类型转换为子类型:强制转换
父类型的引用必须指向转型的子类的对象,即指向谁才能转换成谁。不然运行的时候会抛出异常
instanceof运算符
用来解决引用对象的类型,避免类型转换的安全性问题,提高代码的强壮性。instanceof 运算符用来判断对象是否可满足某个特定类型实例特征。返回值为true/false。一般用于 if 语句中。
如果左边对象是右边类的实例则返回 true,否则返回 false。