一个对象具有自己的状态,行为和标识。这意味着对象有自己的内部数据(提供状态)、方法 (产生行为),并彼此区分(每个对象在内存中都有唯一的地址)。 ———Grady Booch
封装
(1)使用访问控制原因:
①使应用程序员不触碰细节。
②使研发程序员后期优化更新时不影响使用。
语法:
public(公开); private(私有); protected(受保护); default(默认
继承
基类包含派生自它的类型之间共享的所有特征和行为。
is-a VS is-like-a
- is-a 覆盖基类
- is-like-a 在派生类添加新的接口元素
多态
发送消息给对象时,若程序不知道具体类型,但最终执行正确,即可理解为对象的“多态性”
- 非OOP编译器产生的函数调用所进行早期绑定,即编译器生成特定函数名调用,调用被解析为执行代码的绝对地址。
OOP语言使用后期绑定的概念,被调用的代码直到运行时才确定。
- Upcasting(向上转型): 把子类当成基类处理
例如:你是一个几何形状,可erase()和draw(), 不管你是三角或者正方形,均适用。
单继承
Java所有的类需要继承于一个基类Object
集合 (Collection): 类似于C++中STL库
常见的又: List,Map, Tree, Queue等