一个对象具有自己的状态,行为和标识。这意味着对象有自己的内部数据(提供状态)、方法 (产生行为),并彼此区分(每个对象在内存中都有唯一的地址)。 ———Grady Booch


封装

(1)使用访问控制原因:
   ①使应用程序员不触碰细节。
   ②使研发程序员后期优化更新时不影响使用。
语法:
public(公开); private(私有); protected(受保护); default(默认

继承

image.png
基类包含派生自它的类型之间共享的所有特征和行为。

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等