Java 基础的面试高频01|面向对象三大特性(封装、继承、多态)
Java 作为一门纯面向对象编程语言,面向对象三大特性几乎是所有 Java 面试的开篇必考题。很多同学只会简单背诵封装、继承、多态三个名词,一旦面试官深挖重载重写区别、多态的实现形式就会卡壳。今天我们结合面试高频考点,彻底吃透面向对象核心知识点,不仅记住结论,更搞懂底层设计思想。
一、封装:隐藏实现,暴露访问入口
1. 什么是封装
封装就是将类的属性私有化,对外提供公共的 get/set 方法来访问、修改私有成员变量,把对象的内部实现细节隐藏起来,只对外暴露安
全的访问方式。
2. 设计意义
-
保护类中数据的安全性,避免外部随意篡改属性;
-
代码高内聚,业务逻辑统一在类内部维护,降低代码耦合;
-
方便统一做参数校验,比如给年龄赋值时限制范围 0-120。
面试常见追问
如果不做封装,直接把成员变量用public修饰会有什么问题?
答:外部可以随意赋值非法数据,无法做数据校验,代码可维护性、安全性极差。
二、继承:代码复用,建立类与类的从属关系
1. 继承核心作用
通过extends关键字让子类复用父类非私有属性、方法,减少重复代码,同时可以基于父类进行功能扩展,是实现多态的前提条件。
2. Java 继承核心规则
-
Java 是单继承:一个类只能直接继承一个父类,但可以多层继承;
-
子类无法继承父类 private 修饰的成员;
-
构造方法不能被继承,子类默认会调用父类无参构造super();
-
可以通过方法重写对父类功能进行拓展改造。
面试高频坑点
为什么 Java 不支持多继承?
答:避免方法冲突,如果多个父类存在同名方法,子类调用时会产生二义性,所以 Java 采用单继承 + 多实现接口的方式来兼顾代码拓展性。
三、多态:同一个行为,不同对象有不同实现
1. 多态核心概念
父类引用指向子类对象,同一个方法调用,根据运行时实际对象类型,执行不同子类的方法实现,分为编译时多态、运行时多态两类。
2. 多态两种体现形式
(1)编译时多态:方法重载(Overload)
同一个类中,方法名相同,参数个数、类型、顺序不同,和返回值、访问修饰符无关,在编译阶段就确定调用哪个方法。
典型场景:同一个类中多个同名构造方法、工具类重载方法。
(2)运行时多态:方法重写(Override)
子类重写父类的方法,父类引用指向子类对象时,程序运行阶段才确定执行子类重写后的方法。
重写约束:子类方法权限不能低于父类、返回值兼容、方法名参数列表必须完全一致,不能重写父类 final/static 方法。
面试必问:重载和重写详细区别
| 对比维度 | 重载 (Overload) | 重写 (Override) |
|---|---|---|
| 发生位置 | 同一个类中 | 父子类之间 |
| 方法要求 | 方法名相同,参数列表不同 | 方法名、参数列表、返回值必须兼容 |
| 权限修饰符 | 无限制 | 子类权限不能比父类更严格 |
| 多态类型 | 编译期多态 | 运行期多态 |
| 关键字 | 无强制要求 | 可以用 @Override 注解校验 |
四、面向对象面试高频总结
-
封装:藏细节、保安全;继承:做复用、拓功能;多态:解耦合、易扩展;
-
重载看参数,重写看父子;重载编译绑定,重写运行绑定;
-
多态的三个前提:继承 / 实现、方法重写、父类引用指向子类对象。

浙公网安备 33010602011771号