第8章 多态

向上转型     泛型

分离接口和实现

·【类与类耦合视角】多态:<分离>做什么~接口|怎么做~实现

      ·好处:

            ·更可读:<改善>(代码的)组织结构和可读性

            ·更可写:<创建>(可扩展的)程序

      ·作用:<消除>(类型之间的)耦合关系

      ·接口级别的代码复用

      ·别名:动态绑定||后期绑定||运行时绑定

·【类(对象)个体视角】“封装”:通过打包特征和行为来创建新的数据类型

·【开发者与使用者】“实现隐藏”:通过将细节“私有化”把接口和实现分离开来

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:

原文地址:https://www.cnblogs.com/InformationGod/p/8519666.html