多态
1.概念:多态是同一个行为,具有多个不同表现形式或形态的能力。
2.多态的好处:提高代码扩展性,提高代码复用性。
3.多态的分类:
多态类型:
①向上转型:父类的引用指向子类对象。
②向下转型:为解决多态向上转型弊端。
4.多态向上转型弊端:一但发生向上转型,由于对外是父类的数据类型,
不能调用子类所持有的属性和方法。
5.多态的向下转型:
①原因:解决向上转型的弊端。
②向下转型的弊端:如果真实对象,不是要转换的数据类型对象。会报classcastException
类型转换异常。
③解决向下转型的弊端:
①关键字:instanceof
②格式→ 要转换的变量 instanceof 要转换成的数据类型
④注意:instanceof后面的数据类型必须精确,要转那个类型就是那个类型,不能使用父类。
6.多态成员之间的调用问题
①方法绑定:绑定指的是一个方法的调用,与方法所在的类(方法主体)关联起来。
②方法绑定的分类:
①静态绑定/前期绑定/编译期绑定:在编译时,就能确定那个类的那个方法。
②动态绑定/后期绑定/运行期绑定:在运行时,才能确定那个类的那个方法。
③成员:
①编译期绑定:属性(静态或非静态)静态方法。
②运行期绑定:非静态方法。
总结:
①编译看左:属性 和静态方法
②运行期,先看左,在看右:非静态 先看赋值符号左侧的数据类型,确定要执行的方法。
运行时看右侧真实对象,决定是调用父类还是子类的重写方法
类与类之间的关系
1.继承关系:本类是同一种事物。
2.聚合关系:整体和部分,可以分开。
3.组合关系:整体和部分,不可分开。
向上转型/里氏替换
任何基类出现的地方,子类也可以存在,通俗的说,就是任何父类出现的地方,子类也可以出现。