news 2026/4/26 11:55:32

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 15:43:16

‌2026年测试数据生成需求暴增:成因、热度与从业者突围指南

现象概述‌ 2026年初,软件测试领域迎来颠覆性变革——测试数据生成需求呈现爆发式增长。这一现象并非偶然,而是多重技术与社会因素交织的结果。随着AI技术渗透至各行各业,测试数据作为保障系统稳定性的基石,其重要性被空前放大。…

作者头像 李华
网站建设 2026/4/23 15:01:49

收藏!华为员工转岗大模型拿百万年薪,小白/程序员入门LLM必看指南

近日,我在技术社群刷到一则刷屏热议帖:一位华为在职员工,从传统开发岗成功转型大模型算法岗后,高调晒出百万年薪收入条,还毫无保留地分享了自己的转岗全流程心得。这则帖子瞬间在程序员圈引爆讨论——评论区里&#xf…

作者头像 李华
网站建设 2026/4/22 13:58:17

基于vue3实施部门权限分配及审批的监管系统-开题报告 黄耀兴202006050071 (2)

目录研究背景与意义系统目标技术选型系统模块设计创新点预期成果项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作研究背景与意义 部门权限分配及审批监管系统在现代企业管理中具有重要作用。随着企业规模扩…

作者头像 李华
网站建设 2026/4/23 0:40:09

基于Vue技术的营养食品搭配系统的设计与实现任务书

目录系统背景与目标技术选型核心功能模块关键实现技术预期成果备注项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作系统背景与目标 现代人对健康饮食需求日益增长,但缺乏专业营养知识。该系统基…

作者头像 李华
网站建设 2026/4/25 19:38:07

域控制器架构十年演进

域控制器(Domain Control Unit, DCU) 的十年(2015–2025),是汽车电子电气架构(EEA)从“诸侯割据”走向“高度中央集权”的剧变史。 它完成了从上百个分散的 ECU 到几个核心“域”的集成&#x…

作者头像 李华
网站建设 2026/4/25 19:50:54

视觉感知十年演进

视觉感知(Visual Perception) 的十年(2015–2025),是从“识别照片里的像素”向“重建实时三维物理世界”的跨越。 视觉感知是自动驾驶的“眼睛”。这十年间,视觉算法完成了从 2D 到 3D、从局部到全局、从“…

作者头像 李华