news 2026/5/5 15:23:34

Java SE 面向对象

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java SE 面向对象

Java SE 面向对象(OOP)核心知识点详解
(从零基础到面试/项目常用级别 · 2026 年视角 · 清晰 + 对比 + 代码 + 常见误区)

Java 是纯面向对象语言(几乎一切皆对象),它的面向对象特性比 C++ 更纯粹、更严格。下面按实际掌握顺序和重要程度排列。

一、面向对象四大基本特征(必须倒背如流)

特征中文名一句话核心含义Java 中的体现方式面试经典问题
封装Encapsulation把数据和操作数据的方法绑定在一起,对外隐藏细节private 成员变量 + public/getter/setter为什么 getter/setter 比直接 public 好?
继承Inheritance子类复用父类的属性和方法extends(单继承)Java 为什么不支持多继承?用接口解决什么?
多态Polymorphism同一个方法调用,不同对象有不同表现方法重写 + 父类引用指向子类对象编译时绑定 vs 运行时绑定?
抽象Abstraction隐藏具体实现,只暴露必要接口abstract 类 / 接口abstract class 和 interface 区别?

二、类与对象(最基础但最容易写错)

// 类(模板 / 蓝图)publicclassPerson{// 成员变量(属性 / 字段)privateStringname;// 封装:privateprivateintage;privatestaticintcount;// 类变量(static)// 构造方法(创建对象时调用)publicPerson(){// 无参构造(默认提供,但写了有参就没了)this("未知",0);// 调用其他构造}publicPerson(Stringname,intage){this.name=name;this.age=age;count++;}// 方法(行为)publicvoideat(){System.out.println(name+" 在吃饭");}// getter / setter(封装的体现)publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}// 静态方法publicstaticintgetCount(){returncount;}}

使用:

Personp1=newPerson("张三",25);Personp2=newPerson();p1.eat();// 张三 在吃饭System.out.println(Person.getCount());// 2

三、this 与 super 的使用场景(高频易错)

关键字代表什么常见用法场景不能用在哪
this当前对象本身区分同名变量、调用其他构造、返回自身static 方法里
super父类对象(父类的引用)调用父类构造、调用父类方法/属性static 方法里
classStudentextendsPerson{privateStringschool;publicStudent(Stringname,intage,Stringschool){super(name,age);// 必须是第一行this.school=school;}@Overridepublicvoideat(){super.eat();// 调用父类的 eatSystem.out.println("学生在食堂吃饭");}publicStudentchain(){this.age=18;returnthis;// 方法链调用}}

四、方法重载(Overload) vs 方法重写(Override)

维度方法重载(Overload)方法重写(Override)
发生位置同一个类子类与父类
方法名相同相同
参数列表不同(个数/类型/顺序)必须完全相同(包括泛型在 JDK 1.5 后)
返回值类型可以不同(但建议一致)必须相同或协变返回类型(子类更小范围)
访问修饰符无要求不能更严格(public > protected > 默认 > private)
异常无要求不能抛出更广的 checked 异常
注解无需推荐加 @Override(编译检查)

五、访问权限修饰符对比(最容易混)

修饰符本类同包子类(不同包)其他类(不同包)记住口诀
public全公开
protected×包 + 子类
默认(无)××包内可见
private×××只有自己能用

六、抽象类 vs 接口(2026 年面试最爱问的区别)

维度abstract classinterface(JDK 8+)
成员变量可以有普通变量 + 常量只能有 public static final 常量
方法可以有抽象方法 + 具体方法可以有抽象方法 + default 方法 + static 方法
构造方法可以有不能有
继承/实现单继承(extends)多实现(implements)
访问修饰符可以是任意默认 public
适用场景有部分相同实现,想强制子类实现某些方法完全定义规范 / 行为契约,多实现场景

JDK 8+ 接口新特性(必须知道):

  • default 方法:提供默认实现(解决接口演进问题)
  • static 方法:工具方法
  • private 方法(JDK 9+):接口内部复用逻辑
interfaceFlyable{intMAX_SPEED=1000;// public static finalvoidfly();// 抽象方法defaultvoidland(){// 默认方法System.out.println("慢慢降落...");}staticvoidrepair(){// 静态方法System.out.println("飞机维修中");}}

七、final 关键字在面向对象中的三种用法

  1. final 变量:常量(基本类型值不可改,引用类型地址不可改)
  2. final 方法:不能被子类重写
  3. final 类:不能被继承(String、Integer、LocalDateTime 等)

八、面向对象设计原则(SOLID)速记(中高级必备)

  • Single Responsibility Principle → 单一职责
  • Open-Closed Principle → 对扩展开放,对修改关闭
  • Liskov Substitution Principle → 里氏替换原则(子类可替换父类)
  • Interface Segregation Principle → 接口隔离
  • Dependency Inversion Principle → 依赖倒置(面向接口编程)

九、常见误区 & 面试追问

  1. static 方法能被 override 吗? → 不能,只能被 hide(隐藏)
  2. 子类构造方法第一行不写 super() 会怎样? → 编译器自动调用父类无参构造(没有就报错)
  3. private 方法能被继承吗? → 不能被继承,但子类可以定义同名方法(不是重写)
  4. 接口可以有构造方法吗? → 不能
  5. 为什么 Java 不支持多继承? → 菱形问题,用接口 + default 方法解决

你现在最想深入的面向对象部分是哪一块?

  • 构造方法 / this / super 的各种细节?
  • 多态的实现原理(虚方法表)?
  • 抽象类 vs 接口的真实项目选型?
  • final / static / this 的组合使用?
  • 还是想看一个完整的面向对象小项目示例?

直接告诉我,我继续给你针对性内容~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 21:41:37

中屹指纹浏览器多场景技术适配与接口封装实践

摘要:多账号运营场景的多元化,对指纹浏览器的场景适配能力和接口封装能力提出了更高要求。本文以中屹指纹浏览器为研究对象,重点分析其在跨境电商、自媒体、游戏等主流运营场景中的技术适配策略,以及标准化接口封装的实现方案&…

作者头像 李华
网站建设 2026/5/2 17:23:39

量子算法测试结果解析工具的核心原理与应用价值

量子算法测试结果解析工具(简称“一键可视化”)是一种基于量子计算原理的数据分析工具,专为处理高维、复杂数据设计。它将公众号内容数据(如阅读量、点赞数、评论热度)视为量子态向量,通过算法模拟量子叠加…

作者头像 李华
网站建设 2026/4/29 18:08:46

[嵌入式系统-171]:直流电机通过PWM信号控制转速和连续运转;步进电机通过脉冲信号实现开环控制,每接收一个脉冲转动一个固定步距角;伺服电机则通过PWM脉宽指令结合内部反馈实现闭环控制,精确控制

“直流电机通过PWM信号控制转速和连续运转;步进电机通过脉冲信号实现开环控制,每接收一个脉冲转动一个固定步距角;伺服电机则通过PWM脉宽指令结合内部反馈实现闭环控制,精确到达并维持指定角度。” ✅ 第一句: “直流…

作者头像 李华
网站建设 2026/4/30 15:44:04

Python学习之路-字典(Dictionary)学习详解

Python 学习之路 —— 字典(dict)详解 (从零基础到能熟练使用常见场景,2025-2026 风格写法) 字典是 Python 中使用频率极高的数据结构,几乎可以说是“Python 程序员的瑞士军刀”。 一、字典的核心概念&am…

作者头像 李华
网站建设 2026/5/3 6:36:56

Java static 与 final 详解(简单易懂)

Java static 与 final 详解(2025–2026 视角,简单易懂版) static 和 final 是 Java 中最容易混淆的两个修饰符,但它们解决的问题完全不同。 用最生活化的比喻来记住: 修饰符生活比喻核心含义修饰对象能不能改什么时…

作者头像 李华
网站建设 2026/5/3 8:03:22

行车控制算法十年演进

行车控制算法(Longitudinal & Lateral Control) 的十年(2015–2025),是从“公式定义驾驶”向“AI 模拟本能”跨越的十年。 行车控制是自动驾驶的执行终端,负责将规划好的轨迹转化为车辆的转向、油门和…

作者头像 李华