第8章 多态

  • 8.2 转机
    1. 绑定:将一个方法调用通一个方法主体(方法所在的类)关联起来。
    2. 在程序执行前进行绑定叫做前期绑定;在运行时根据对象的类型进行绑定叫做后期绑定(动态绑定or运行时绑定)。后期绑定机制随着语言的不同有着差异,但是都必须在对象中安置某种“类型信息”。
    3. Java中除了static方法和final方法(private方法属于final方法)之外,其他都是后期绑定。(用final的一个优势或许是有效的“关闭”动态绑定)
    4. 动态绑定步骤:JVM提取对象实际类型的方法表->JVM搜索符合参数要求的方法->调用方法
    5. 只有普通方法调用是多态的(后期绑定),直接访问某个域(a data memeber of a class),这个访问是在编译期进行解析的。

  • 8.3 构造器和多态
    1. 确保导出类所要使用的成员都已经构建完毕(基类中可能有private类型,只有基类自己可以调用private成员变量),必须要先调用基类的构造器。
    2. 销毁的顺序应该和初始化顺序相反,首先对导出类进行清理,然后才是基类。
    3. 如果存在多个对象共享的情况,就要使用引用计数来跟踪。(附代码)
    4. 如果在构造器内部调用一个动态绑定的方法,就要用到那个方法的被覆盖后的定义。在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制的零。这个就是导致代码中r=0的原因(附代码)
    5. 用尽可能简单的方法使对象进入正常状态,如果可以的话避免条用其他方法。(可以调用private或者final方法)
    6. 协变返回类型:表示在导出类中的被覆盖方法可以返回基类方法返回类型的某种导出类型。(附代码)

输出:

输出:

 

协变返回类型:

  • 8.5 用继承进行设计
    1. 向下转型:基类转成导出类。在运行期间对类型进行检查的行为成为“运行时类型识别”(RTTI)。

Telegram频道已经开通,关注flyzythink,随手分享正能量,了解VPS优惠与补货
Telegram群组已经开通,加入flyzy小站,FREE TO TALK
QQ群开通:780593286 flyzy小站
搬瓦工补货通知群:618922256 搬瓦工补货通知群
点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注