1.概述:
多态是指在继承/实现情况下的一种现象,表现为:对象多态、行为多态。
(1)对象多态:同一个对象(事物),可以以不同形态呈现。
(2)行为多态:同一行为,有不同表现。
2.多态的前提:
(1)有继承/实现关系
(2)存在父类引用子类对象
(3)存在方法重写
3.注意事项:
多态是对象、行为的多态,Java中的属性(成员变量)不谈多态。
4.使用多态的好处:
(1)在多态形式下,右边对象是解耦合的(可以随时切换其他对象),更便于扩展和维护。
(2)定义方法时,使用父类类型的形参,可以接收一切子类对象,扩展性更强、更便利。
5.多态下存在一个问题:多态下不能使用子类的独有功能。
6.类型转化:
(1)自动类型转换:父类 变量名 = new 子类;
(将子类赋值给父类,小范围的赋值给大范围)
(2)强制类型转换: 子类 变量名 = (子类)父类变量;
(将父类赋值给子类,大范围的赋值给小范围)
①注意:存在继承/实现关系就可以在编译阶段进行强制类型转换,编译阶段不会报错。
但运行时,若发现对象的真实类型与强转后的类型不同,则会报强制类型转换异常(ClassCastException)的错误出来。
7.推荐做法(先判断要强转对象的真实类型):
强转前,Java建议使用instanceof关键字,判断当前对象的真实类型,再强转。