news 2026/6/25 10:54:41

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/6/22 4:52:11

字为基·星为途——汉语何以领跑科技时代,领航星际文明?

字为基星为途——汉语何以领跑科技时代,领航星际文明? 引言:语言,科技与星际文明的底层基础设施 在科技发展日新月异的当下,我们仿佛置身于一辆高速飞驰的列车之上,见证着无数的创新与变革。从人工智能的…

作者头像 李华
网站建设 2026/6/22 4:49:34

[嵌入式系统-172]:直流电机、步进电机和伺服电机的异同

直流电机、步进电机和伺服电机是三种最常用的电动机类型,广泛应用于机器人、自动化设备、消费电子、工业控制等领域。它们在工作原理、控制方式、精度、成本和应用场景上既有区别也有联系。 下面从多个维度对三者进行系统性的 异同对比分析。 一、基本定义 类型简…

作者头像 李华
网站建设 2026/6/22 4:49:33

[嵌入式系统-173]:步进电机是如何实现精确的角度控制的?

步进电机之所以能实现精确的角度控制,是因为它将旋转运动“数字化”——每接收一个电脉冲信号,就转动一个固定的微小角度(称为步距角)。这种特性使其在无需反馈装置的情况下,也能实现高精度的位置和角度控制。下面详细…

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

基于微信小程序的家政服务与互助平台

随着微信小程序的普及,我们推出了一个创新的家政服务与互助平台。该平台基于微信生态系统,利用其社交网络优势,为用户提供便捷的家政服务预约与管理。用户可以轻松浏览家政服务、预约服务、接收订单提醒,并通过服务记录追踪服务状…

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

2000-2024年地级市市场化水平

在地方经济治理研究中,“市场化水平”常被用来刻画市场在资源配置中的相对作用强弱 本文参考《中国工业经济》熊凌云等(2025)文中关于市场化水平指标的构建与测算方法,测算地级市层面的市场化水平数据,测算方式如下&a…

作者头像 李华