面向对象
三大特性
1. 封装
利用抽象数据类型将数据和基于数据的行为封装在一起,隐藏内部实现细节,用户使用其提供的对外访问接口来操作该对象。类内应该高内聚,类与类之间低耦合。
2. 继承
以现有的类为基础,在其之上进行添加或修改操作,复用旧类的同时获得新的功能,具有 is-a 关系,继承遵循里氏替换原则,子类对象能够替换所有父类对象,也就是父类引用可以指向子类对象。如下,Cat 可以当做 Animal 来使用,也就是说可以使用 Animal 引用 Cat 对象,称为向上转型。
Animal animal = new Cat();
3. 多态
编译时多态:方法重载
运行时多态:满足三个条件-继承、重写、父类引用指向子类对象(向上转型),其说明的是对象引用所指向的具体类型在运行期间才确定
类图关系
- 泛化关系:描述继承关系
- 实现关系:实现一个接口
- 聚合关系:整体由部分组成,整体和部分不是强依赖关系,整体不存在,部分可以单独存在

- 组合关系:整体由部分组成,但整体和部分是强依赖的,整体不存在,则部分也就不存在了。

- 关联关系:描述的是不同对象之间的存在关联,可以用 1 对 1、多对 1、多对多这种关联关系来表示

- 依赖关系:在运行时起作用,依赖关系主要有三种形式--A 类是 B 类中的(某中方法的)局部变量、 A 类是 B 类方法当中的一个参数、A 类向 B 类发送消息,从而影响 B 类发生变化。

**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。