Java 面向对象三大特性:封装、继承、多态
系统讲解 Java 面向对象的三大核心特性。首先介绍封装,通过私有属性和公共方法隐藏实现细节,增强安全性与可维护性。其次阐述继承,子类复用父类功能,支持方法重写。接着解析多态,同一引用指向不同对象,实现编译期与运行期的区别。文章对比了普通类、抽象类和接口的使用场景及区别,并解答了关于多继承不支持等常见面试问题。旨在帮助开发者深入理解 OOP 本质与实际应用。

系统讲解 Java 面向对象的三大核心特性。首先介绍封装,通过私有属性和公共方法隐藏实现细节,增强安全性与可维护性。其次阐述继承,子类复用父类功能,支持方法重写。接着解析多态,同一引用指向不同对象,实现编译期与运行期的区别。文章对比了普通类、抽象类和接口的使用场景及区别,并解答了关于多继承不支持等常见面试问题。旨在帮助开发者深入理解 OOP 本质与实际应用。

Java 作为一门典型的面向对象语言,有三个核心特性:
很多人会背概念,但真正写代码时却容易混淆。
这篇文章带你系统理解它们的本质与实际应用场景。
封装的核心思想:
隐藏内部实现细节,对外只暴露必要的接口。
通俗理解:
'该给你看的给你,不该看的别动。'
private 修饰成员变量public 的 getter / setter 方法示例:
public class User {
private String username; // 私有属性
public String getUsername() {
return username;
}
public void setUsername(String username) {
if (username == null || username.isEmpty()) {
throw new IllegalArgumentException("用户名不能为空");
}
this.username = username;
}
}
优势:
继承是:
子类复用父类的属性和方法。
关键字:
extends
示例:
public class Animal {
public void eat() {
System.out.println("动物在吃东西");
}
}
public class Dog extends Animal {
public void bark() {
System.out.println("狗在叫");
}
}
方法重写示例:
@Override
public void eat() {
System.out.println("狗在吃骨头");
}
多态的本质:
同一父类引用,指向不同子类对象。
示例:
Animal animal = new Dog();
animal.eat();
输出:
狗在吃骨头
说明:
必须满足:
Spring 中大量使用多态思想,例如:
List list = new ArrayList();
很多人搞不清楚三者区别,这里一次对比清楚。
| 特性 | 继承普通类 | 继承抽象类 | 实现接口 |
|---|---|---|---|
| 关键字 | extends | extends | implements |
| 能否实例化 | 可以 | 不可以 | 不可以 |
| 是否可有构造方法 | 有 | 有 | 无 |
| 是否可有成员变量 | 可以 | 可以 | 只能是常量 |
| 抽象方法 | 不必须 | 可以有 | Java8 前必须全是抽象方法 |
| 多继承 | ❌ 不支持 | ❌ 不支持 | ✅ 可实现多个接口 |
明确是"is-a"关系
如:Dog 是 Animal
public abstract class Template {
public void process() {
step1();
step2();
}
abstract void step1();
abstract void step2();
}
public interface Flyable {
void fly();
}
Java8 之后接口可以有:
很多人误以为它们是独立的。
实际上:
封装 → 提供安全结构
继承 → 提供代码复用
多态 → 提供扩展能力
它们共同构成面向对象的核心思想。
因为:
Java 用接口解决多继承问题。
Java 三大特性核心理解:

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online