• 20190819 On Java8 第九章 多态


    第九章 多态

    向上转型回溯

    可扩展性

    由于多态机制,在一个设计良好的面向对象程序中,许多方法,只与基类接口通信。这样的程序是可扩展的,因为可以从通用的基类派生出新的数据类型,从而添加新的功能。那些操纵基类接口的方法不需要改动就可以应用于新类。

    陷阱:”覆写“私有方法

    只有非 private 方法才能被覆写,但是得小心覆写 private 方法的现象,编译器不报错,但不会按我们所预期的执行。为了清晰起见,派生类中的方法名采用与基类中 private 方法名不同的命名。

    陷阱:属性与静态方法

    只有普通的方法调用可以是多态的。

    如果一个方法是静态(static)的,它的行为就不具有多态性。静态的方法只与类关联,与单个的对象无关。

    构造器和多态

    构造器不具有多态性(它们实际上是静态方法,但是隐式声明的)。

    构造器调用顺序

    对象的构造器调用顺序:

    1. 基类构造器被调用。这个步骤重复递归,直到根基类的构造器被调用,然后是它的派生类,以此类推,直到最底层的派生类构造器被调用。
    2. 按声明顺序初始化成员。
    3. 最终调用派生类的构造器。

    构造器内部多态方法的行为

    初始化的实际过程是:

    1. 在所有事发生前,分配给对象的存储空间会被初始化为二进制 0。
    2. 如前所述调用基类构造器。
    3. 按声明顺序初始化成员。
    4. 最终调用派生类的构造器。

    编写构造器有一条良好规范:做尽量少的事让对象进入良好状态。如果有可能的话,尽量不要调用类中的任何方法。在构造器中唯一能安全调用的只有基类的 final 方法(包括 private 方法,它们自动属于 final)。

    协变返回类型

    Java 5 中引入了协变返回类型,这表示派生类的被覆写方法可以返回基类方法返回类型的派生类型。

    使用继承设计

    有一条通用准则:使用继承表达行为的差异,使用属性表达状态的变化。在上个例子中,两者都用到了。

  • 相关阅读:
    第 9 章 用户自己建立数据类型
    第 10 章 对文件的输入输出
    第 7 章 用函数实现模块化程序设计
    第 4 章 选择结构程序设计
    第 5 章 循环结构程序设计
    第 6 章 利用数组处理批量数据
    第 3 章 最简单的 C 程序设计——顺序程序设计
    第 1 章 程序设计和 C 语言
    第 2 章 算法——程序的灵魂
    SQL(SQL Server) 批量替换两列的数据
  • 原文地址:https://www.cnblogs.com/huangwenjie/p/11375708.html
Copyright © 2020-2023  润新知