Java面向对象四大特征是封装、继承、多态、抽象。封装通过private字段+public getter/setter控制访问,保障数据安全与低耦合;继承用extends实现is-a关系,复用代码并构建层次结构;多态以父类引用调用子类重写方法,实现运行时动态绑定,提升扩展性;抽象通过abstract类或interface定义契约,分离接口与实现,支撑面向接口编程。

Java 面向对象的四大特征是:封装、继承、多态、抽象。面试中回答要简洁准确,突出“为什么重要”和“怎么体现”,避免堆砌定义。
封装:保护数据 + 统一入口
把属性设为 private,提供 public 的 getter/setter 方法来访问和修改。不是为了“不让别人看”,而是为了控制访问逻辑——比如 setAge() 里可以加年龄合法性校验(0–150),防止外部传入非法值。类内部实现变了(比如 age 改成 long 类型或加缓存),只要接口不变,调用方完全无感。
- 核心作用:隐藏细节、增强安全、降低耦合
- 典型写法:private 字段 + public get/set 方法(IDE 可自动生成)
- 注意点:setter 中建议做参数校验;boolean 类型的 getter 习惯用 isXxx() 而非 getXxx()
继承:复用代码 + 建立 is-a 关系
用 extends 让子类获得父类的非私有成员(字段、方法),并可重写(override)父类方法或新增自己独有的功能。它表达的是“是一种”的关系,比如 Dog extends Animal,Dog 是一种 Animal。
- Java 只支持单继承(一个类只能有一个直接父类),但可通过接口弥补
- 构造器不继承,但子类构造器默认/显式调用 super() 初始化父类
- 关键价值:减少重复代码,形成清晰的类层次结构
多态:同一调用,不同执行
指同一个引用(比如父类类型变量)在运行时指向不同子类对象,从而调用到各自重写后的方法。最常见形式是“父类引用指向子类对象”+“方法重写”。例如:
Animal a = new Dog(); a.sound(); // 实际执行 Dog 的 sound()- 前提:继承(或实现接口)+ 方法重写 + 向上转型(父类引用)
- 好处:解耦调用方与具体实现,新增子类(如 Cat)无需修改原有逻辑
- 区分:重载(overload)是编译时多态,重写(override)才是运行时多态的核心
抽象:定义契约,延迟实现
通过 abstract class 或 interface 描述“做什么”,不关心“怎么做”。抽象类可含具体方法和抽象方法;接口(尤其 JDK 8+)可含 default/static 方法,但核心仍是规范行为。
- 抽象类适合有共性代码的场景(比如模板方法);接口更适合定义能力契约(如 Flyable、Runnable)
- 子类必须实现所有抽象方法(除非自身也声明为 abstract)
- 本质是“面向接口编程”:依赖抽象,而非具体实现
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











