面向对象的三大特征:封装、继承、多态
父类类型范围>子类类型范围
多态的概念:
同一个类型的对象,执行同一个行为,在不同的状态下会表现出不同的行为特征
多态的识别技巧:
对于方法的调用:编译看左边,运行看右边
对于变量的调用:编译看左边,运行看左边
多态的使用前提:
1.必须存在继承或实现关系
2.必须存在父类类型的变量引用子类类型的对象
3.需要存在方法重写
优势:
在多态形式上,右边对象可以实现组件化切换,业务功能也随之改变,便于扩展和维护。可以实现类与类的解耦;
实际开发的过程中,父类类型作为方法形式参数,传递子类对象给方法,可以传入一切子类对象进行方法的调用,更能体现出多态的扩展性和便利。
Java建议在进行强制类型转换,编译阶段一定不报错!
但是运行阶段可能出现:类型转换异常ClassCastException
Java建议在进行强制类型转换之前先判断变量的真实类型,在强制类型转换!
变量 instance of 类型:判断前面的变量是否是或者其子类类型才会返回true
弊端:不能直接调用子类的独有功能 ,所以要进行强制类型转换
为了解决多态的弊端,那么就要判断强制类型转换时的真实类型
格式:if(变量 instance of 真实类型){
真实类型 对象名称 = (真实类型) 之前的对象名称;
}
总结:有继承或者实现的两个类型就可以进行强制类型转换,编译阶段一定不会报错
但是运行阶段可能会实现:类型转换异常 ClassCastException
Java建议在进行强制类型转换转换之前先判断变量的真实类型,在进行强制类型转换。
变量 instanceof 类型:判断前面的变量是否是后面类型或者是其子类才会返回true
问题:面向对象思想设计一个电脑对象,可以接入两个USB设备
(鼠标、键盘 实现接入,调用独有功能,拔出)