Java 面向对象三大特性(封装、继承、多态)超详细讲解|面试+开发必备
大家好,这篇文章专门给 Java 初学者整理面向对象三大核心特性:封装、继承、多态,内容包含概念、语法、代码示例、面试考点、易错点,完全对标课堂笔记与企业开发规范,适合发 CSDN、做学习总结、备战笔试面试。
前言
面向对象编程(OOP)是 Java 的核心思想,封装、继承、多态是三大基石。
- 封装:保证数据安全、隐藏实现细节
- 继承:提升代码复用、建立类层次
- 多态:提升程序灵活、统一接口调用
本文从基础→语法→实战→面试一站式讲透。
一、封装(Encapsulation)
1. 什么是封装?
把属性私有化,对外只提供公共访问方法,外部不能直接篡改数据,只能通过规范接口读写。
一句话:该藏的藏,该露的露。
2. 封装的实现步骤
1. 属性私有化:用 private 修饰
2. 提供公共 getter/setter- getXxx() :获取属性
- setXxx() :设置属性(可加校验)
3. 外部通过方法访问,不直接操作属性
3. 代码示例
java
public class Student {
// 1. 属性私有化
private String name;
private int age;
// 2. getter 获取值
public String getName() {
return this.name;
}
// 3. setter 赋值(可加校验)
public void setAge(int age) {
if (age < 0 || age > 150) {
System.out.println("年龄不合法!");
return;
}
this.age = age;
}
public int getAge() {
return this.age;
}
}
4. 封装的好处
✅ 数据安全,防止非法赋值
✅ 便于维护,内部修改不影响外部
✅ 提高代码复用性、规范性
5. 面试常问
- 为什么要用 private + getter/setter ,不直接用 public ?
答:控制访问权限、可加校验、保护数据完整性。
二、继承(Inheritance)
1. 什么是继承?
类与类之间满足 is-a 关系,子类 extends 父类,复用父类属性与方法,并可扩展自身功能。
语法:
java
class 子类 extends 父类 { }
示例:
Dog extends Animal 、 Student extends Person
2. 继承的核心特点
- Java 单继承:一个类只能有一个直接父类
- 可多级继承:A→B→C
- 构造方法不能被继承
- 父类私有成员( private )不能被继承
3. 方法重写(Override)【面试高频】
子类重新实现父类已有的方法。
重写规则:
1. 方法名、参数列表、返回值类型完全相同
2. 子类权限 ≥ 父类( public > protected > default > private )
3. 不能抛出更宽泛的异常(了解即可)
java
class Animal {
public void eat() {
System.out.println("动物吃东西");
}
}
class Dog extends Animal {
// 重写
@Override
public void eat() {
System.out.println("狗吃骨头");
}
}
4. 方法重写 vs 方法重载(面试必背)
特性 重写(Override) 重载(Overload)
位置 父子类之间 同一个类中
方法名 相同 相同
参数列表 相同 不同
返回值 相同 无要求
权限 不能更严格 无要求
5. super 关键字【重点】
- super() :调用父类构造(必须在第一行)
- super.成员 :访问父类属性/方法
6. 继承中对象创建过程
1. 先加载父类,再加载子类
2. 先初始化父类属性,再执行父类构造
3. 再初始化子类属性,执行子类构造
三、多态(Polymorphism)
1. 什么是多态?
父类引用指向子类对象,同一个方法在不同子类有不同表现。
语法:
java
父类 引用 = new 子类();
示例:
java
Animal a = new Dog();
a.eat(); // 执行 Dog 的 eat()
2. 多态的运行规则
- 编译看左边(父类):只能调用父类拥有的方法
- 运行看右边(子类):若子类重写,执行子类方法
3. 类型转换
1. 向上转型(自动):子类 → 父类
2. 向下转型(强制):父类 → 子类
java
Animal a = new Dog();
Dog d = (Dog) a;
4. 避免 ClassCastException
用 instanceof 判断类型:
java
if (a instanceof Dog) { ... }
5. 多态的三大应用场景
1. 多态数组:存父类+所有子类对象
2. 方法形参:接收父类+所有子类实参
3. 方法返回值:返回父类+任意子类对象
6. 多态好处
✅ 统一接口、屏蔽子类差异
✅ 代码更通用、易扩展
✅ 符合开闭原则
四、三大特性总结(面试可直接背)
1. 封装:数据安全、隐藏细节 → 基础
2. 继承:代码复用、层级结构 → 桥梁
3. 多态:灵活扩展、动态绑定 → 目标
一句话记忆:
封装保安全,继承提复用,多态强扩展。
五、常见面试题(直接背答案)
1. 面向对象三大特性?
答:封装、继承、多态。
2. 重载和重写的区别?
答:看上面表格。
3. this 和 super 区别?
答:this 指向本类对象;super 指向父类对象。
4. Java 继承特点?
答:单继承、可多级继承。
5. 多态的前提?
答:继承 + 方法重写 + 父类引用指向子类对象。
结语
这篇文章把封装、继承、多态从课堂笔记整理成CSDN 标准博客,结构清晰、示例完整、面试点全覆盖,适合 Java 初学者夯实基础、复习备考。
如果对你有帮助,欢迎 点赞、收藏、关注,后续持续更新 Java 基础、集合、JVM、并发等硬核干货!