适用场景:期末考、面试、校招、Java 基础巩固
难度:基础 − 中级
关键词:Java、面向对象、面试题、构造方法、封装、多态、重载、重写
 
📌 文章摘要
 
本文整理了Java 面向对象(OOP)最全高频面试题 + 标准答案,涵盖基础概念、权限修饰符、构造方法、三大特性、易错题、手写代码题。
答案全部按照面试官标准精简编写,可直接背诵,适合面试、考试、期末复习。
 
🧭 文章目录
 
1. 基础概念类(必问)
2. 权限修饰符(必考表格)
3. 构造方法高频考点
4. 封装、继承、多态(核心三大块)
5. 易错题 & 避坑题
6. 手写代码题(必考)
 
 


 
一、基础概念类(必问高频)
 


1. 什么是面向对象?三大特征?
 
面向对象是把现实事物抽象成程序中的对象,通过对象的属性和行为来描述系统。
三大特征:封装、继承、多态。
 
2. 类和对象的区别?
 
类:事物的抽象描述,是对象的模板。
对象:类的具体实例,是具体的、可占用内存的实体。
 
3. 一个 .java 文件可以有多个类吗?规则?
 
可以。但必须遵守:
 
最多 1 个 public 类
public 类的类名必须 = 文件名
其他类为包权限,仅同包可见
 
4. 构造方法是什么?特点?
 
构造方法是创建对象时自动调用的特殊方法,用于初始化对象属性。
特点:
 
方法名 = 类名
无返回值,也不能写 void
可重载
每个类默认有一个无参构造
 
5. 构造方法能否重载?能否重写?
 
可以重载:同一个类可定义多个构造方法(参数列表不同)。
不能重写:构造方法不能被继承,因此不存在重写。
 
6. this 关键字的作用?
 
代表当前对象
区分成员变量与局部变量(解决命名冲突)
调用本类其他构造方法: this(...) 
    


 
 
二、权限修饰符(必考表格)
 


1. 四种权限访问范围对比(必考表格)
 

 
2. 什么是包权限?
 
不写任何修饰符,即为包权限。
仅同一个包内的类可访问,不同包无法访问。
 


 
 
三、构造方法高频考点
 


1. 默认构造方法什么时候存在?什么时候消失?
 
存在:类中没有任何构造方法时,编译器自动生成无参构造。
消失:一旦手动写任意构造,编译器不再自动生成默认构造。
 
2. 无参构造 vs 有参构造
 
无参构造:创建默认属性的对象
有参构造:通过参数动态初始化属性,更灵活
 
3. 构造方法 vs 普通方法
 
构造方法名 = 类名;普通方法自定义
构造方法无返回值;普通方法必须声明
构造方法在 new 时自动调用;普通方法手动调用
构造方法每个对象仅调用一次;普通方法可调用多次
 
4. 构造方法能不能写返回值?能不能写 void?
 
不能。写 void 会被识别为普通方法,构造方法失效。
 
 


 
四、封装、继承、多态(核心三大块)
 


1. 什么是封装?为什么要封装?
 
封装:将属性私有化(private),对外提供公共方法访问。
目的:
 
保护数据安全
避免外部直接修改属性
提高代码可维护性
 
2. private 的作用?
 
仅本类内部可访问,是封装的基础。
 
3. 方法重载(Overload)
 
同一个类中:
 
方法名相同
参数列表不同
与返回值无关
实现不同的同名方法。
 
4. 方法重写(Override)
 
子类继承父类后:
 
方法名、参数、返回值必须完全一致
权限不能严于父类
用于实现不同的业务逻辑
 
5. 重载 vs 重写区别(最常考)
 
重载:同一个类,同名 + 不同参
重写:父子类,方法签名完全一致
 
6. 多态?前提?
 
多态:同一行为,不同对象产生不同表现。
前提:
 
1. 继承或实现
2. 子类重写父类方法
3. 父类引用指向子类对象
 
 


 
五、易错题 & 避坑题
 


1. == vs equals() 区别
 
==:基本类型比较值,引用类型比较地址
equals:默认比地址,重写后比较内容(如 String)
 
2. String 为什么不能用 == 比较?
 
String 是引用类型,== 比较的是内存地址,不是字符串内容。
 
3. 成员变量 vs 局部变量
 
成员变量:类中方法外,有默认值
局部变量:方法内,无默认值,必须初始化
 
4. 静态变量 vs 实例变量
 
static:属于类,所有对象共享
实例变量:属于对象,每个对象独有
 
5. 为什么重写 equals 必须重写 hashCode?
 
Java 规范规定:
两个对象 equals 相等 → hashCode 必须相等
否则会导致 HashSet/HashMap 等集合使用出错。
 


 
 
六、手写代码题(必考)
 


1. 标准 JavaBean(Student 类)
 
java   

public class Student {
    private String name;
    private String id;
    private double mathScore;
    private double chineseScore;



    public Student() {}

    public Student(String name, String id, double mathScore, double chineseScore) {
        this.name = name;
        this.id = id;
        this.mathScore = mathScore;
        this.chineseScore = chineseScore;
    }

    // getter / setter 省略
}


 
 
2. 构造方法重载示例
 
java   

public class Test {
    private String msg;
    public Test() {
        this.msg = "默认值";
    }
    public Test(String msg) {
        this.msg = msg;
    }
}


 
 
3. 根据学号查姓名
 
java   

public String getNameById(List<Student> list, String targetId) {
    for (Student s : list) {
        if (s.getId().equals(targetId)) {
            return s.getName();
        }
    }
    return "未找到该学生";
}


 
 
4. 计算平均分
 
java   

public double getAvg(double math, double chinese) {
    return (math + chinese) / 2;
}


 
 
 
 
🎯 总结
 
面向对象是 Java 的核心基础,面试与考试几乎90% 都会考。
本文整理了全网最高频、最标准、最可背诵的面向对象面试题,你直接背这套即可应对大部分考试与面试。
 
 
 
 
 

七、Java 面向对象 20 条速记口诀

1. 面向对象三特征:封装、继承、多态

2. 类是模板对象实,抽象具体要分清

3. 一个文件一类公,类名文件名要相同

4. 构造方法名同类,无返无 void 自动配

5. 构造能重不能写,this 区分变量界

6. 权限四大要记清:公、护、缺、私逐级停

7. 包权限不加符,同包能用外包无

8. 无构造时默认有,一写构造默认走

9. 无参默认有参活,构造重载灵活多

10. 普通方法手动调,构造 new 时自动跑

11. 封装私有加 get set,数据安全不越界

12. 重载同类名相同,参数不同才有用

13. 重写父子签名同,权限不能比父松

14. 多态三前提:继承、重写、父引用

15. == 比值也比址,equals 重写比内容

16. 字符串别用 ==,equals 比较才稳准

17. 成员变量有默认,局部变量要赋值

18. 静态属于类共享,实例属于对象方

19. equals 重写 hashCode,集合不乱才规范

20. 标准 bean 四件套:私有、构造、get、set


八、标签🧷

Java
Java基础
面向对象
OOP
面试题
构造方法
封装
继承
多态
重载
重写
程序员
编程学习

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐