Java编程思想_第八章_多态笔记

前言

这个笔记主要是本章主要的内容概括,以及书上一些自己认为重要的句子的一个摘要。

主要内容概括

本章主要内容包括

  1. 多态的作用
  2. 再论向上转型
  3. 方法调用绑定
  4. private方法设计时注意点
  5. 构造器和多态
  6. 协变返回类型
  7. 向下转型和运行时类型识别

多态的作用

  • 多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来。多态不但能够实现改善代码的组合结构和可读性,还能够创建可扩展的程序———即无论在项目最初创建时还是需要添加功能时都可以”生长”的程序。

再论向上转型

  • 对象既可以做为它自己本身的类型使用,也可以作为他的基类型使用。这种把对某个对象的引用视为对基类型的引用的做法被称作向上转型。

方法调用绑定

  • 将一个方法调用同一个方法主体关联起来被称作绑定。若在程序执行前进行绑定叫做前期绑定。
  • 向上转型造成了当只有基类引用,传入的是导出类时,当需要调用方法时,编译器无法知道究竟调用哪个方法才对。
  • 解决的办法就是后期绑定,它的含义就是在运行时根据对象的类型进行绑定。后期绑定也叫做动态绑定或运行时绑定。
  • Java中除了static方法和final方法(private方法属于final方法)之外,其他所有的方法都是后期绑定。
  • 在使用final方法时应注意,最好根据设计来决定是否使用final,而不是出于试图提高性能的目的来使用final。

private方法设计时注意点

  • 由于private方法被自动认为是final方法,而且对导出类是屏蔽的。
  • 只有非private方法才可以被覆盖,但是还需要密切注意覆盖private的现象,这时编译器不会报错,但是也不会按照我们所期望的来执行。确切地说,在导出类中,对于基类中的private方法,最好采用不同的名字。

构造器和多态

  • 尽管构造器并不具有多态性(它们实际上是static方法,只不过该static是隐式)
  • 基类的构造器总是在导出类的构造过程中被调用,而且按照继承层次逐渐向上链接,以使得每个基类的构造器都能得到调用。
  • 复杂对象调用构造器要遵照下面的顺序:
    • 调用基类构造器
    • 按照声明顺序调用成员的初始化方法。
    • 调用导出类的构造器
  • 编写构造器时有一条有效的准则:用尽可能简单的方法使对象进入正常状态;如果可以的话,避免调用其他方法,你可能无法总是能够遵循这条准则,但是应该朝着它努力

协变返回类型

  • 协变返回类型允许返回更具体的Wheat(子类)类型

向下转型和运行时类型识别

  • 由于向上转型会丢失具体的类型信息,那么通过向下转型——也就是在继承层次中向下移动——应该能够获取类型信息。
  • 我们知道向上转型是安全的,但是向下转型会出新ClassCastException(类转型异常),必须要有某种方法确保向下转型的正确性。
  • 在Java语言中,所有转型都会得到检查,这种运行期间对类型进行检查的行为称作”运行时类型识别”(RTTI)(Run-Time Type Information)。RTTI的内容不仅仅包括转型处理,

你可能感兴趣的:(Java)