JDK系列03:面向对象核心,类、对象、继承、多态、接口与抽象类深度剖析

发布时间:2026/7/1 19:27:40
JDK系列03:面向对象核心,类、对象、继承、多态、接口与抽象类深度剖析 JDK系列03面向对象核心类、对象、继承、多态、接口与抽象类深度剖析专栏系列JDK核心底层进阶系列03阅读前置零基础友好无需深厚编程基础从编程思想落地到代码实战循序渐进吃透核心核心收获彻底弄懂 OOP 编程思想、类与对象本质、三大特性底层逻辑、接口与抽象类终极区别解决 99% 面向对象面试题规避开发常见误区一、前言面向对象为什么是Java的基石所有Java开发者入门的第一道门槛也是面试必问、高频、深挖的核心考点就是面向对象编程OOPObject Oriented Programming。Java 是纯面向对象语言万物皆对象是Java的核心设计理念。相较于 C 语言的面向过程侧重步骤、流程面向对象彻底改变了编程思维从“怎么做”转变为“谁来做”。很多开发者工作多年依然存在认知误区只会写类和对象代码却不懂封装的真正意义、继承的设计规范、多态的底层实现更是分不清抽象类与接口的核心差异面试频频丢分、项目代码冗余混乱。本文作为 JDK 系列核心基石文章将从编程思想→核心概念→三大特性→核心组件对比→代码实战→面试避坑全方位深度拆解打造满分干货博文看完彻底吃透Java面向对象所有核心知识点。二、编程思想面向过程 VS 面向对象2.1 面向过程POP核心思想聚焦流程、步骤将业务拆分为一个个顺序执行的步骤通过函数调用完成业务。特点流程清晰、耦合度高、复用性差、扩展性极差适合简单小项目代表语言C语言。通俗举例做饭必须严格按照「买菜 → 洗菜 → 切菜 → 炒菜 → 装盘」固定步骤执行任意一步改动整体流程都要调整。2.2 面向对象OOP核心思想聚焦实体、行为将现实事物抽象为程序中的对象通过对象的属性和行为交互完成业务。特点高复用、低耦合、易扩展、易维护适合大型企业级项目代表语言Java、Python、C。通俗举例做饭定义「厨师、食材、厨具」对象厨师拥有做饭行为无需关注具体流程细节直接调用行为即可。三、核心基础类与对象OOP 的最小单元面向对象的所有特性、语法、逻辑全部基于**类Class和对象Object**实现二者是 OOP 的核心基石。3.1 类与对象的本质关系类现实事物的抽象模板是概念、定义、规则不存在实体包含属性成员变量和行为成员方法对象类的具体实例是真实存在的实体根据类模板创建拥有类定义的所有属性和行为。经典结论类是对象的模板对象是类的实例面试必背。3.2 代码实战定义类与创建对象// 1. 定义类人类抽象模板publicclassPerson{// 属性成员变量描述事物特征privateStringname;privateintage;// 行为成员方法描述事物功能publicvoidstudy(){System.out.println(name正在学习 Java 面向对象);}// getter/setter 方法publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.namename;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.ageage;}}// 2. 创建对象实例化publicclassOopTest{publicstaticvoidmain(String[]args){// 根据Person类模板创建具体对象PersonpersonnewPerson();// 给对象属性赋值person.setName(张三);person.setAge(20);// 调用对象行为person.study();}}3.3 对象创建的底层细节执行new Person()时JVM 会完成 3 件事加载 Person 类的元数据到方法区在堆内存开辟空间创建对象实体初始化默认属性值将堆内存对象地址赋值给栈中的引用变量 person。四、OOP 三大核心特性面试重中之重面向对象编程的核心优势全部依托封装、继承、多态三大特性实现三者层层递进、相互关联是 Java 代码复用、解耦、扩展的核心底层。4.1 封装Encapsulation安全性核心4.1.1 核心定义将类的属性私有化对外隐藏内部数据和实现细节仅通过公开的方法暴露数据访问和修改入口。4.1.2 实现方式使用private修饰成员变量禁止外部直接访问提供public修饰的 get/set 方法控制数据读写权限可在 set 方法中加入数据校验逻辑保证数据合法性。4.1.3 封装核心作用面试高频安全性避免外部随意篡改数据防止非法数据赋值代码解耦隐藏内部实现外部只需要调用方法无需关注细节便于维护内部逻辑修改无需改动外部调用代码。4.1.4 封装进阶实战数据校验publicclassPerson{privateintage;// 重写 set 方法加入数据校验publicvoidsetAge(intage){if(age0age150){this.ageage;}else{System.out.println(年龄不合法);}}publicintgetAge(){returnage;}}4.2 继承Inheritance复用性核心4.2.1 核心定义子类派生类通过extends关键字继承父类超类的非私有属性和方法实现代码复用同时子类可扩展自有功能。4.2.2 Java继承核心规则必考Java单继承一个子类只能有一个直接父类避免多继承逻辑冲突支持多层继承A 继承 B、B 继承 C形成继承体系子类无法继承父类的 private 私有成员、构造方法所有类默认直接或间接继承Object类顶层父类。4.2.3 继承代码实战// 父类动物类通用模板classAnimal{publicvoideat(){System.out.println(动物需要进食);}}// 子类狗类继承动物类复用通用方法 扩展自有方法classDogextendsAnimal{// 子类独有方法publicvoidbark(){System.out.println(狗狗汪汪叫);}}// 测试publicclassExtendTest{publicstaticvoidmain(String[]args){DogdognewDog();dog.eat();// 继承父类方法dog.bark();// 子类自有方法}}4.2.4 方法重写Override子类对父类已有的非私有、非final、非static方法进行重新实现适配子类专属业务逻辑。重写核心规则方法名、参数列表、返回值完全一致访问权限 父类不能抛出更宽泛异常。4.2.5 继承核心作用与避坑优势极大减少重复代码、统一父类规范、为多态提供基础避坑点继承是强耦合关系父类修改会影响所有子类禁止滥用继承优先使用组合has-a。4.3 多态Polymorphism扩展性核心多态是面向对象最核心、最难理解、面试深挖最多的特性是 Java 程序高扩展的底层支撑。4.3.1 核心定义同一行为不同子类实现不同效果。父类引用指向子类对象程序运行时根据真实子类类型执行对应方法。4.3.2 多态实现的三个必要条件缺一不可必须存在继承/实现关系子类必须重写父类方法父类引用指向子类对象向上转型。4.3.3 多态代码实战// 父类classAnimal{publicvoidshout(){System.out.println(动物发出叫声);}}// 子类1狗classDogextendsAnimal{Overridepublicvoidshout(){System.out.println(汪汪汪);}}// 子类2猫classCatextendsAnimal{Overridepublicvoidshout(){System.out.println(喵喵喵);}}// 多态测试publicclassPolymorphismTest{publicstaticvoidmain(String[]args){// 父类引用指向不同子类对象同一方法不同实现Animala1newDog();Animala2newCat();a1.shout();// 输出汪汪汪a2.shout();// 输出喵喵喵}}4.3.4 多态底层原理动态绑定编译看左边运行看右边编译阶段以父类类型为准校验方法是否存在运行阶段JVM 动态识别真实子类对象执行子类重写后的方法即动态绑定机制。4.3.5 多态核心价值彻底解耦新增子类无需修改原有代码符合开闭原则是 Spring 多态注入、框架扩展的核心底层。五、核心重难点抽象类 VS 接口终极对比抽象类和接口是面向对象抽象设计的核心也是面试最高频对比考题90% 开发者无法说清本质区别。二者均用于定义规范、不能实例化但设计思想、语法、场景完全不同。5.1 抽象类abstract class5.1.1 核心特点使用abstract修饰不能实例化可包含抽象方法和普通方法有构造方法用于子类初始化父类成员成员变量可私有、默认、protected可包含静态变量Java 单继承子类只能继承一个抽象类设计思想模板复用抽取子类通用属性和行为做通用模板。5.2 接口interfaceJDK 8 前后接口语法差异极大是核心考点5.2.1 JDK 7 及以前只能包含全局常量、抽象方法无构造方法、无普通方法所有成员默认public修饰。5.2.2 JDK8新特性新增默认方法default、静态方法static解决接口升级兼容问题。5.2.3 JDK9新特性新增私有方法抽取接口内部重复逻辑。5.2.4 接口核心特点不能实例化无构造方法支持多实现一个类可实现多个接口解决单继承局限设计思想行为规范定义类必须具备的功能不关注属性极度解耦只定义契约不限制实现。5.3 抽象类 接口 终极对比表对比维度抽象类abstract class接口interface核心定位模板复用是什么行为规范能做什么继承/实现单继承 extends多实现 implements构造方法有无成员变量支持所有修饰符可可变默认public static final常量方法类型抽象方法、普通方法、静态方法抽象、默认、静态、私有方法JDK8耦合程度高耦合继承关系低耦合契约关系使用场景抽取通用代码、统一子类模板定义功能规范、解耦扩展、多能力拓展5.4 开发选型原则实战必用需要复用代码、统一通用属性/方法→ 用抽象类需要定义行为规范、多扩展、解耦→ 用接口日常开发优先用接口符合低耦合、开闭原则。六、重载 VS 重写面试高频易混点结合继承与多态梳理两大核心方法特性彻底解决混淆问题。对比维度重载Overload重写Override定义位置同一个类中父子类之间方法特征方法名相同参数列表不同方法名、参数、返回值完全一致权限修饰符无限制子类权限 ≥ 父类绑定时机编译期静态绑定运行期动态绑定多态核心核心作用方法同名多场景适配子类个性化重写父类逻辑七、OOP开发核心设计原则进阶升华面向对象语法是基础设计思想是核心所有 Java 框架、源码均遵循以下原则单一职责一个类只负责一个功能杜绝臃肿类开闭原则对扩展开放对修改关闭多态核心落地里氏替换子类可以完全替换父类不破坏原有逻辑依赖倒置依赖抽象接口/抽象类不依赖具体实现类组合复用优先优先使用成员变量组合避免滥用继承高耦合。八、全文满分总结面试直接背诵核心基石类是抽象模板对象是具体实例万物皆对象是Java核心设计理念三大特性封装安全、隐藏细节、继承复用、搭建体系、多态扩展、动态绑定层层递进支撑OOP设计重载重写重载是同类多方法适配静态绑定重写是父子类个性化实现动态绑定、多态基础接口与抽象类抽象类做模板复用单继承、有构造接口做规范约束多实现、低耦合JDK8接口支持默认/静态方法核心思想面向对象本质是解耦、复用、扩展所有语法最终服务于高可用、易维护的企业级代码设计。九、下期预告JDK系列04JDK8 Lambda表达式与函数式接口一行代码简化集合遍历码字不易点赞收藏关注持续更新JDK底层、新特性、JVM调优、并发编程高质量干货