第八章 多态

封装通过合并特征和行为来创建新的数据类型。 实现隐藏则通过将细节私有化,把接口和实现分离开来。 多态的作用是消除类型之间的耦合。

8.1 再论向上转型

8.1.1 忘记对象类型

将接口引用当参数传递

8.2 转机

8.2.1 方法调用绑定

将一个方法调用同一个方法主题关联起来被称作绑定。

前期绑定:若在程序执行前进行绑定,叫做前期绑定。 后期绑定:在运行时根据对象的类型进行绑定。也叫动态绑定或者运行时绑定。 java中除了static方法和final方法,其他都是动态绑定。

8.2.2 产生正确的行为

8.2.3 可扩展性

只有非private方法才可以被覆盖,对于导出类中,对与基类中的private方法,最好采用不同的名字。

8.2.4 缺陷:覆盖私有方法

private 方法被自动认为是final方法,而且对导出类是屏蔽的。

8.2.5 缺陷:域与静态方法

静态方法是与类、而非与单个的对象相关联的。

8.3 构造器和多态

构造器不同于其他种类的方法。涉及到多态时仍然是如此,尽管构造器并不是有多态性(他们实际上是static方法,隐式的)

8.3.1 构造器的调用顺序

父类的构造器总是在导出类的构造过程中被调用,保证每个父类的构造器都能够被调用。 调用构造器的顺序:

  • 调用父类构造器
  • 按照声明顺序调用成员的初始化方法。
  • 调用子类构造器的主题。

8.3.2 继承与清理

销毁的顺序和创建的顺序是相反的。

8.4 协变返回类型

8.5 用继承进行设计

更好的方式是首先选择“组合”。组合更加灵活

8.5 总结

多态意味着 不同的形式。在面向对象的设计中,我们持有从基类继承而来的相同接口,以及使用该接口的不同形式不同版本的多态绑定方法。 运用数据的抽象和继承,能更好的类型和创造多态的例子。

猜你喜欢

转载自my.oschina.net/u/2459349/blog/1788912