01 什么是对象
1.1 抽象的历程
- 编程语言本质是抽象,抽象水平决定处理问题的能力。
- 早期语言要么贴近硬件,要么适用场景有限。
- OOP 把现实事物抽象成拥有状态、行为、标识的对象,直接映射业务,简化复杂程序开发。
1.2 对象具有接口
- 类定义对象对外可用的方法,外界通过方法向对象发送请求。
- 方法的内部实现被隐藏,使用者只需调用方法,不用关心内部细节。
1.3 对象可以提供服务
对象作为服务提供者,通过接口向外提供服务,对象间依靠调用服务协作完成任务。
1.4 隐藏的实现
- Java 使用
public、private、protected及默认包访问权限控制成员可见性。 private对外隐藏内部细节;public开放对外方法;默认权限仅限同包访问;protected支持同包与子类访问。- 对外隐藏实现,内部代码修改不会影响外部调用。
1.5 复用实现
- 代码复用两种方式:组合与继承。
- 组合:在新类中包含已有类的对象,复用其功能,优先推荐。
- 继承:创建原有类的子类,复用并扩展原有类的代码。
- 继承会带来耦合,一般优先使用组合。
1.6 继承
- 继承基于已有类(父类)创建新类(子类),复用父类的属性与方法。
- 子类可扩展新增内容,也可重写父类方法,对原有行为进行修改。
- 继承建立类的层级关系,用来表达事物间 “是一种” 的关系。
1.7 多态
- 多态让同一方法调用,能根据对象实际类型执行对应实现。
- 向上转型把子类对象当作父类引用,分离接口与具体实现。
- 无需修改调用代码,就能接入新的子类,降低耦合。
1.8 单根层次结构
- Java 所有类都继承自 Object 类,形成单根继承层级结构。
- 所有对象都具备 Object 的通用方法,方便统一处理任意对象。
- 简化系统设计,但不支持多类继承。
1.9 集合
- 集合用于存放和管理一组对象,解决容器大小不确定的问题。
- Java 提供多种集合类型,适配不同场景(列表、集合、映射等)。
- 集合存放的是对象引用,并且通常配合泛型来保证类型安全。
1.10 对象的创建和声明周期
- Java 通过 new 在堆中创建对象,栈中保存对象引用。
- 对象从实例化开始,失去引用后,由 GC 自动回收内存。
- JVM 自动管理对象生命周期,程序员不用手动释放内存。
1.11 异常处理
- 异常处理用于隔离正常业务逻辑与错误处理代码。
- 遇到异常时,程序抛出异常对象,通过 try-catch 捕获处理。
- 提供统一的错误机制,保障程序不会直接崩溃,方便排查问题。
1.12 总结
- OOP 核心:抽象、封装、继承、多态。
- 对象拥有状态与行为,依靠权限控制隐藏内部实现。
- 提供集合、异常、自动内存管理等机制支撑开发。
- 面向对象思想是用模型映射现实问题,简化复杂软件构建。