当前位置: 首页 > news >正文

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 的组合使用?
  • 还是想看一个完整的面向对象小项目示例?

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

http://www.jsqmd.com/news/325496/

相关文章:

  • 推荐专业的研究院转让公司,全国范围内哪家比较靠谱?
  • Python开发平台怎么选?核心功能与场景匹配指南
  • 低代码测试平台的隐私合规陷阱:软件测试从业者的专业避坑指南
  • 2026年行业内做得好的四边封包装袋批发厂家口碑推荐,中封袋/自立袋/纹路袋/聚酯尼龙袋,四边封包装袋订做厂家哪家靠谱
  • 2026年企业服务性价比大比拼,聊聊中企优帮的市场竞争力和费用详情
  • cycler复数形式是什么?cyclers用法解析
  • 量子算法测试结果解析工具的核心原理与应用价值
  • 408真题解析-2010-21-计组操作系统-中断执行顺序
  • 2026年上门按摩平台权威解析与推荐盘点:五大平台综合深度评估
  • 探讨推荐的AI办公鼠标企业哪家口碑好
  • 字为基·星为途——汉语何以领跑科技时代,领航星际文明?
  • 2026年螺杆式冷水机生产厂售后好的品牌口碑排行榜
  • 收藏备用|小白程序员必看!RAG技术详解,轻松搞定大模型“胡说八道”难题
  • ‌2026年测试数据生成需求暴增:成因、热度与从业者突围指南
  • 2026年马鞍山3M授权加盟连锁店口碑排名
  • 强烈安利10个AI论文工具,继续教育学生轻松搞定论文写作!
  • 2026市场口碑好的光伏连接件源头厂家怎么挑?实用攻略来了,行业内光伏连接件品牌宏罡通用设备专注行业多年经验,口碑良好
  • 收藏!华为员工转岗大模型拿百万年薪,小白/程序员入门LLM必看指南
  • 基于ONNX的进一步加速:TensorRT
  • 工程过程审计公司怎么选,龙腾国信实力如何?
  • 2000-2024年地级市市场化水平
  • 基于微信小程序的家政服务与互助平台
  • 基于Vue的线上宠物商品购物系统 开题报告 改
  • 监控系统失效的常见原因剖析
  • Java static 与 final 详解(简单易懂)
  • 情感化工具设计:让测试报告不再冰冷
  • 【Spring】超详细!一篇文章让你完全理解Spring Ioc和 DI
  • 基于vue3实施部门权限分配及审批的监管系统-开题报告 黄耀兴202006050071 (2)
  • 图片如何适应容器框
  • Python学习之路-字典(Dictionary)学习详解