多态:
格式:
父类名称 对象名称 = new 子类构造器;
接口名称 对象名称 = new 实现类构造器;
概念:同一个类型的对象,执行同一个行为,在不同的状态下会表现出不同的行为特征。
多态识别技巧:
对于方法的调用:编译看左边,运行看右边。
对于变量的调用:编译看左边,运行也看左边。
(左边是父类,右边是子类)
使用前提:
1.必须存在继承和实现关系
2.必须存在父类类型的变量引用子类类型的对象
3.需要存在方法重写
多态的优势:
1.右边可以实现组件化切换,业务功能也随之切换,便于维护和扩展,可实现类与类之间的解耦
2.实际开发过程中,父类类型作为方法形式参数,传递子类对象给方法,可以传递一切子类对象进行方法的调用,更能体现出多态的扩展性和便利
劣势:
当子类想调用自己独有的方法时,编译看左边,说明父类中必须要有此方法,不然编译阶段就报错。
如何解决劣势:
使用引用类型的强制类型转换。大范围转小范围需要强制转换。由父类类型转为子类类型需要强转。
有继承/实现关系的两个类型就可以实现类型转换,编译阶段一定不会报错,但运行阶段可能报ClassCastException
建议在转换之前先判断变量的真实类型,语法:变量 instanceof 类型
前者是后者的类型或者其子类类型才会返回true
原文:https://www.cnblogs.com/superyucong/p/12637815.html