- 继承
-
- 从OOD的角度看,类是对对象的抽象,继承是对一批类的抽象,从而实现对现实世界更好的建模。
- 从OOP的角度看,继承提高了代码的复用性。
- 所有构造器的第一句都是:super();
- 内存分析
继承vs组合
is-a 继承
has-a 组合
- 封装
-
- 隐藏对象内部的复杂性,只对外公开简单的借口。便于外界调用,从而提高系统的可扩展性、可维护性。
- 程序设计要追求“高内聚,低耦合”。高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。低耦合是指,一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。合适恰当的封装是高内聚低耦合的保证。
- 隐藏和暴露通过访问控制符来实现。
|
同一类(自己)
|
同一包(家)
|
子类(家族)
|
所有类
|
private
|
√
|
|
|
|
default
|
√
|
√
|
|
|
protected
|
√
|
√
|
√
|
|
public
|
√
|
√
|
√
|
√
|
- 多态
-
- 多态是指允许同一方法可以根据发送对象的不同而采用多种不同的行为方式。
- 多态性是OOP中的一个重要特性,作用是消除类型之间的耦合关系。这个特性在大型系统中能提高系统的灵活性和可扩展性。
- 多态的出现有三个必要条件:有继承、有方法重写、父类引用指向子类对象。
- 实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
- java实现多态的重点在于引用类型的两种:
-
-
- 编译时类型(模糊一点,一般是父类,由声明时的类型决定)
- 运行时类型(具体的实现类,由实际对应的对象类型决定)
-