Thinking in Java 第七、八、九章笔记

第七章 复用类

继承

一、 继承有一个通用的规则是:将所有的数据成员都指定为private,将所有的方法指定为public。
二、 在发生继承的情况下,初始化顺序是先初始化父类,在初始化子类。具体的初始化过程顺序如下:

  1. 先根据继承关系依次初始化父类
  2. 再初始化成员变量
  3. 在执行当前类的构造器内内容
  4. 执行main方法

继承是典型的("is-a")关系。

组合

将某个类作为另一个类的引用既是组合,组合是复用的基本手段之一。
组合通常用于想在新类中使用现有类的功能而并非是他的接口这种情况。即,在新类中嵌入某个对象,让其实现所需要的功能,但新类的用户看到的只能是为新类所定义的接口,而非所嵌入对象的接口。
组合是典型的("has-a")关系。
继承和组合都允许在新类中放置子对象,区别是组合是显示的做,而继承则是隐式的做。

代理

从语法层面来讲,代理是组合和继承的中庸之道,结合继承和组合一起使用。但个人认为代理就是组合的一种特殊情况,代理可以灵活的选择在新类中提供的方法是成员对象中的方法的某个子集。

final关键字

final可作用于数据、方法和类三种情况。通常final是代表无法改变的。

  1. final作用于属性时,表示该属性是常量,初始化之后不可改变。但并不是在声明是必须初始化,Java允许空final的出现,即只声明变量而不初始化。另外,final作用于基本属性是表示属性的值不可变,而作用于对象等引用类型时表示当前引用不可变,例如final作用于数组则表示改变量指向数组的引用不可变,但数组内的元素是可变的。
  2. final作用于方法时,表示当前方法不可被重写,即在继承时不会被覆盖。另外所有private方法都隐式指定了final关键字。
  3. final作用于类时,表示当前类不可以被继承,由于final类禁止继承,所以final类中方法都隐式指定为了final的。

第八章 多态

多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来。
将一个方法调用同一个方法主体关联起来被称为绑定,如果在程序运行前绑定,则称之为前期绑定,如果在运行时根据对象类型进行绑定则称之为运行时绑定、动态绑定或后期绑定。Java中除了static方法和final方法是前期绑定之外,其他均为后期绑定。
多态是一项将改变的事物与未来的事物分离开来的重要技术。

第九章 接口

策略模式

创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,被称之为策略模式。这类方法包含所要执行的算法中固定不变的部分,而“策略”包含变化的部分。策略就是传递进去的参数对象,它包含要执行的代码,一般的,策略对象通常使用接口+多态来实现不同策略。

适配器模式

如果碰到无法修改需要使用的类的情况,可以使用适配器模式。适配器中的代码通过接受所拥有的接口,产生所需要的接口。其核心思想是通过对所拥有接口的代理或组合,产生适配当前情况的新的接口。

你可能感兴趣的:(Thinking in Java 第七、八、九章笔记)