java 基础
- 面向对象设计:针对抽象编程而不是针对细节编程,即程序中的所有依赖关系都是终止与抽象,或者接口,就是面向对象设计,反正则是面向过程设计;
- 类:具有相同属性和功能的对象的抽象集合才是类
- 动态绑定(dynamic binding):动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
- 多态:动态绑定允许你在运行时刻彼此替换有相同接口的对象。这种可替换性就称之为多态
- 聚合:聚合意味着一个对象拥有另一个对象或者对另一个对象负责。一般我们称一个对象包含另一个对象或者是另一个对象的一部分。聚合意味着聚合对象和其所有者具有相同的生命周期
- 合成(Composition):也有翻译成组合的,是一种强的,‘拥有关系’,体现了严格的部分和整体的关系,部分和整体的生命周期一样
- 里氏代换原则(LSP):一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且观察不出父类和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化,简单的说,“子类必须能够替换掉它们的父类型”。
- 依赖倒转原则(依赖倒置原则):抽象不应该依赖细节,细节应该依赖于抽象;就是争对接口编程,不要对实现编程。
- 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等;对象包括数据和对数据进行操作的过程,过程通常称之为方法或操作
- 类:类是一个模板,它描述一类对象的行为和状态。
- 抽象类(abstract class):的主要目的是为它的子类定义公共接口。一个抽象类将把它的部分或全部操作的实现延迟到子类中,因此,一个抽象类不能实例化。在抽象类中定义却没有实现的操作称之为抽像操作(abstract operation)。非抽象类称为具体类(concrete class)
- 混入类(mixin class):是给其他类提供可选择的接口或功能的类。它与抽象类一样不能实例化。混入类要求多继承
- 对象的类(class)与对象的类型(type)之间的差别:一个对象的类定义了对象是怎样实现的,同时也定义了对象内部状态和操作的实现。但是对象的类型只与它的接口有关,接口即对象能效应的请求的集合。一个对象可以有多个类型,不同类的对象可以有相同的类型
- 白箱复用(white-box reuse): 类继承允许你根据其他类的实现来定义一个类的实现。这种通过生成子类的复用通常称为白箱复用
- 黑箱复用(black-box resuse):对像组合是继承之外的另一中复用选择。新的更复杂的功能可以通过组装或组合对象获得。对象组合要求被组合的对象具有良好定义的接口。这种复用风格被称之为黑箱复用
- 相识:相识意味着一个对象仅仅知道另一个对象。有时候相识也被称为“关联”或者“引用关系”。相识的对象可能请求彼此的操作,但是它们不为对方负责。相识是一种比聚合要弱的关系,它只标识了对象间较松散的耦合关系