向上转型 泛型
分离接口和实现
·【类与类耦合视角】多态:<分离>做什么~接口|怎么做~实现
·好处:
·更可读:<改善>(代码的)组织结构和可读性
·更可写:<创建>(可扩展的)程序
·作用:<消除>(类型之间的)耦合关系
·接口级别的代码复用
·别名:动态绑定||后期绑定||运行时绑定
·【类(对象)个体视角】“封装”:通过打包特征和行为来创建新的数据类型
·【开发者与使用者】“实现隐藏”:通过将细节“私有化”把接口和实现分离开来
8.1 再论向上转型
·向上转型:把(某个对象的)引用<视为>(其基类型的)引用
评:其实,不管是注入基类型还是接口,注入的可以看做是一个集合名称,具体使用时可以使用集合当中的任意元素。
·好处:接口||方法复用率提升
·编译时使用基类或接口,运行时不知道具体应该调用那个子类或实现类的方法
8.2 转机:治愈“健忘症”
·绑定:将一个方法调用同一个方法主体关联起来。【对象调用方法时,对象引用作为参数传入方法】
·前期绑定:程序执行前绑定
·后期绑定:程序执行时绑定
·在对象中安置某种类型信息
·缺陷:
·private方法:无法覆盖,不能重载;
·域:继承关系可知,父类域组成父类对象,子类域组成子类对象,故域不具 有多态性
·静态方法:静态方法与单个对象没有附属关系。
8.3 构造器和多态
·构造器的调用顺序:按照继承层次逐渐向上链接。因为super()调用永远在第一行,故打印结果首先是继承层次最顶层的构造器中的内容。
·构造器不具有多态性
·继承与清理:销毁的顺序应当和初始化顺序相反
·一个类型A的对象被其他类型B的多个对象所共享:要对被共享的对象进行 引用计数,每次附着到其他类型对象上,都要进行计数加1。销毁B类型的对象 时,调用A类型对象的dispose()方法,并进行计数减1,直到引用计数为0时, 方可清理B类型的对象。
8.4 协变返回类型
·继承层次结构{A extends B},和继承层次结构{C extends D},D中有一方法返回值类型为B,C中覆盖的方法返回值类型为A,则成A为协变返回类型。
8.5用继承进行设计
·RTTI: