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

Java继承详解:从基础到实战,吃透面向对象核心特性

哈喽各位Java学习者今天咱们深入拆解面向对象编程OOP的三大核心特性之一——继承。作为Java开发的基础重点继承不仅能帮我们实现代码复用、简化开发更是后续理解多态、抽象类、接口的关键前提。不管你是刚入门的新手还是想巩固基础的开发者这篇文章都能让你彻底搞懂Java继承的核心逻辑与实战用法建议收藏备用一、什么是Java继承核心本质是什么简单来说继承是一种“复用已有类、扩展新功能”的机制允许一个类子类/派生类继承另一个类父类/基类/超类的属性和方法子类无需重复编写父类已有的代码同时还能定义自己的专属属性和方法实现逻辑扩展。继承的核心本质有两个代码复用将多个类的共性属性和方法提取到父类中子类直接继承使用减少重复代码降低维护成本层次化设计建立类与类之间的“is-a”关系比如“学生是一个人”“狗是一种动物”让程序结构更清晰、更具扩展性。举个生活中的例子人Person都有姓名、年龄都会吃饭、睡觉学生Student和老师Teacher都是人除了拥有人的共性还分别有学号、工号以及选课、授课等专属行为——这就是继承的现实体现Person是父类Student和Teacher是子类。二、Java继承的基本语法与实现2.1 核心关键字extendsJava中通过extends关键字实现继承语法格式非常简单牢记“子类 extends 父类”即可// 父类封装共性属性和方法 class 父类名 { // 共性属性 // 共性方法 } // 子类继承父类扩展专属功能 class 子类名 extends 父类名 { // 子类专属属性 // 子类专属方法 }2.2 实战示例从代码看继承的用法结合上面“人、学生、老师”的例子写一段完整的实战代码直观感受继承的作用代码可直接复制运行// 父类Person封装人的共性 class Person { // 共性属性用protected修饰子类可直接访问后续讲解访问权限 protected String name; protected int age; // 父类构造方法用于初始化属性 public Person(String name, int age) { this.name name; this.age age; } // 共性方法吃饭 public void eat() { System.out.println(name 正在吃饭); } // 共性方法睡觉 public void sleep() { System.out.println(name 正在睡觉今年 age 岁); } } // 子类Student继承Person扩展学生专属功能 class Student extends Person { // 子类专属属性学号 private String studentId; // 子类构造方法必须先调用父类构造用super关键字 public Student(String name, int age, String studentId) { super(name, age); // 调用父类的构造方法初始化name和age this.studentId studentId; // 初始化子类专属属性 } // 子类专属方法选课 public void chooseCourse(String course) { System.out.println(学号 studentId 的 name 选择了 course 课程); } } // 子类Teacher继承Person扩展老师专属功能 class Teacher extends Person { // 子类专属属性工号 private String teacherId; // 子类构造方法 public Teacher(String name, int age, String teacherId) { super(name, age); // 调用父类构造 this.teacherId teacherId; } // 子类专属方法授课 public void teach(String course) { System.out.println(工号 teacherId 的 name 老师正在讲授 course 课程); } } // 测试类验证继承效果 public class InheritanceTest { public static void main(String[] args) { // 创建Student对象调用继承的方法和专属方法 Student student new Student(张三, 20, 2024001); student.eat(); // 继承自Person张三正在吃饭 student.sleep(); // 继承自Person张三正在睡觉今年20岁 student.chooseCourse(Java编程); // 专属方法学号2024001的张三选择了Java编程课程 // 换行分隔 System.out.println(------------------------); // 创建Teacher对象调用继承的方法和专属方法 Teacher teacher new Teacher(李老师, 35, T2024001); teacher.eat(); // 继承自Person李老师正在吃饭 teacher.sleep(); // 继承自Person李老师正在睡觉今年35岁 teacher.teach(Java编程); // 专属方法工号T2024001的李老师正在讲授Java编程课程 } }运行结果如下可见子类成功继承了父类的属性和方法同时能正常使用自己的专属功能张三正在吃饭 张三正在睡觉今年20岁 学号2024001的张三选择了Java编程课程 ------------------------ 李老师正在吃饭 李老师正在睡觉今年35岁 工号T2024001的李老师正在讲授Java编程课程三、Java继承的核心规则必记避坑关键Java继承有严格的规则限制新手很容易在这里踩坑一定要牢记以下4点核心规则3.1 单继承限制一个子类只能有一个直接父类Java不支持多继承一个子类不能同时继承多个父类这是为了避免多继承带来的“菱形问题”多个父类有同名方法时子类无法确定调用哪个。但支持多层继承子类可以成为另一个类的父类形成继承链。// 正确多层继承GraduateStudent继承Student间接继承Person class GraduateStudent extends Student { // 研究生专属属性和方法 } // 错误多继承一个子类继承两个父类编译报错 class A extends B, C { // 编译报错{ expected }3.2 构造方法的调用规则重中之重子类的构造方法必须先调用父类的构造方法具体规则如下若子类构造方法中没有显式调用父类构造编译器会自动添加super()调用父类无参构造若父类没有无参构造只定义了有参构造子类必须显式用super(参数)调用父类的有参构造super()或super(参数)必须放在子类构造方法的第一行否则编译报错。反例编译报错class Parent { // 父类只有有参构造无无参构造 public Parent(String name) { this.name name; } } class Child extends Parent { public Child() { // 错误父类无无参构造未显式调用有参构造编译报错 System.out.println(子类构造); } }正确写法class Child extends Parent { public Child() { super(父类名称); // 显式调用父类有参构造放在第一行 System.out.println(子类构造); } }3.3 属性与方法的继承范围受访问修饰符限制子类并不是继承父类的所有成员继承范围由父类成员的访问修饰符决定具体如下优先级public protected 默认 privatepublic子类可直接继承无论子类和父类是否在同一个包protected子类可直接继承无论子类和父类是否在同一个包默认访问权限无修饰符只有同包的子类才能继承private子类不能直接继承但可以通过父类提供的public/protected getter/setter方法间接访问。3.4 Object类所有类的“根父类”Java中所有类包括自定义类都默认继承Object类无需显式写extends ObjectObject类是所有类的“根类”提供了一些基础方法比如toString()返回对象的字符串表示默认是“类名哈希值”子类可重写equals()判断两个对象是否相等默认比较地址值子类可重写hashCode()返回对象的哈希值与equals()配套使用。四、继承的核心特性方法重写Override方法重写是继承的灵魂——子类可以对父类的方法进行“重新实现”让方法的行为更符合子类的需求。比如Person类的work()方法是“默认工作”Student的work()方法可以重写为“学习”Teacher的work()方法重写为“授课”。4.1 方法重写的规则必须满足否则不是重写方法名、参数列表参数个数、类型、顺序必须和父类完全一致返回值类型要么和父类完全一致要么是父类返回值类型的子类子类兼容父类访问权限子类重写方法的访问权限不能低于父类方法的访问权限比如父类是protected子类可以是protected或public不能是private不能重写父类的final方法final修饰的方法不能被重写重写方法时建议添加Override注解可选但推荐能帮编译器检查是否符合重写规则。4.2 方法重写实战示例在之前的Person、Student、Teacher类基础上添加work()方法并实现重写// 父类Person class Person { // 父类的work方法 public void work() { System.out.println(name 正在进行默认工作); } } // 子类Student重写work方法 class Student extends Person { // 重写父类的work方法 Override public void work() { System.out.println(studentId 的 name 正在学习Java); } } // 子类Teacher重写work方法 class Teacher extends Person { // 重写父类的work方法 Override public void work() { System.out.println(teacherId 的 name 正在备课、授课); } }测试后会发现调用student.work()和teacher.work()时执行的是子类重写后的方法而非父类的默认方法——这就是方法重写的作用实现了“同一方法不同实现”。五、继承的优缺点与使用场景继承虽好但不能滥用我们需要客观看待它的优缺点明确适用场景。5.1 优点代码复用减少重复代码父类的共性逻辑只需编写一次所有子类均可复用代码扩展子类可在父类基础上扩展专属功能无需修改父类代码符合“开闭原则”结构清晰建立类的层级关系让程序设计更具逻辑性便于维护和理解。5.2 缺点增加耦合性子类与父类强关联父类的修改比如修改方法签名、删除方法可能导致所有子类报错灵活性降低继承关系在编译期就固化无法在运行时动态改变过度继承问题继承层次过深超过3层会导致代码可读性、可维护性下降。5.3 适用场景只有当类之间满足“is-a”关系且父类设计为可继承时才适合使用继承多个类有共同的属性和方法比如Student、Teacher、Doctor都继承Person需要扩展父类功能且子类与父类的语义一致比如GraduateStudent继承Student研究生也是学生框架强制要求比如JPA的实体类继承BaseEntity统一添加id、创建时间等通用字段。补充若类之间是“has-a”关系比如“汽车有引擎”建议使用组合而非继承降低耦合性。六、继承的常见误区新手必避误区1子类可以继承父类的private成员 纠正不能直接继承private成员被封装子类无法直接访问需通过父类的getter/setter方法间接访问。误区2Java支持多继承 纠正不支持多继承一个子类只能有一个直接父类可通过接口实现多继承的效果。误区3子类构造方法可以不调用父类构造 纠正必须调用要么显式调用super(参数)要么编译器自动添加super()调用父类无参构造。误区4方法重写可以修改方法名或参数列表 纠正不能方法名、参数列表必须和父类完全一致否则是新方法不是重写。误区5继承层次越深越好 纠正建议继承层次不超过3层层次过深会导致代码难以调试和维护。七、总结与进阶建议到这里Java继承的核心知识点就讲完了。总结一下继承的核心是代码复用和逻辑扩展通过extends关键字实现遵循“单继承、多层继承”规则子类必须调用父类构造方法方法重写是实现多态的基础。合理使用继承能简化开发但要避免过度继承降低类之间的耦合性。进阶建议新手进阶必看结合抽象类abstract和接口interface学习理解“抽象父类定义规范子类实现细节”的设计思想掌握final关键字对继承的限制final类不能被继承final方法不能被重写区分“方法重写Override”和“方法重载Overload”避免混淆学习“里氏替换原则”理解“子类可以替换父类且不改变程序的正确性”这是继承的设计核心。如果觉得这篇文章对你有帮助欢迎点赞、收藏、评论关注我后续持续更新Java核心知识点一起从新手成长为资深开发者 有任何疑问评论区留言我会一一回复

相关文章:

Java继承详解:从基础到实战,吃透面向对象核心特性

哈喽,各位Java学习者!今天咱们深入拆解面向对象编程(OOP)的三大核心特性之一——继承。作为Java开发的基础重点,继承不仅能帮我们实现代码复用、简化开发,更是后续理解多态、抽象类、接口的关键前提。不管你…...

QModMaster:5分钟掌握免费开源ModBus调试工具终极指南

QModMaster:5分钟掌握免费开源ModBus调试工具终极指南 【免费下载链接】qModbusMaster 项目地址: https://gitcode.com/gh_mirrors/qm/qModbusMaster 你是否在为工业设备调试而烦恼?面对复杂的ModBus通信协议,商业软件价格昂贵&#…...

告别预烘焙!在UE材质编辑器中实时生成FlowMap和法线贴图(附节点图)

实时材质魔法:UE引擎中FlowMap与法线贴图的动态生成技术 在游戏开发与动态视觉创作领域,材质表现的真实感与动态效果一直是技术美术师们追求的核心目标。传统工作流中,FlowMap(流场图)和法线贴图的生成往往依赖于外部软…...

AI辅助架构设计:让快马平台智能规划trae状态管理方案

用AI辅助设计trae状态管理方案:以博客后台系统为例 最近在开发一个博客后台管理系统时,遇到了状态管理的难题。系统需要处理文章列表、编辑草稿、用户评论和系统设置等多种数据,如何合理组织这些状态让我头疼不已。幸运的是,在In…...

群晖更换RAID类型无需重建服务,保持Volume磁盘盘符不变

我的环境:DSM型号:DS3617xs(黑群晖)系统版本:DSM 7.1.1-42962 Update 6硬盘数据库更新时间:2026-01-23更改前磁盘序号(btrfs):Raid1(volume1)&…...

K8s中pod的创建与销毁

刚开始学习,整了一下流程图1.pod的创建2.pod的销毁有不对的地方,大家共同探讨...

seo规则中的内容创作有哪些注意事项

SEO规则中的内容创作有哪些注意事项 在当今互联网时代,搜索引擎优化(SEO)已成为网站流量和曝光度提升的关键手段。其中,内容创作是SEO的核心要素之一。仅仅创作大量内容并不能保证网站的高排名和高流量。要想在百度等搜索引擎上取…...

在wsl中利用快马平台五分钟搭建flask博客后端原型

最近在Windows系统下折腾WSL(Windows Subsystem for Linux)时,发现结合InsCode(快马)平台可以快速搭建项目原型,特别适合需要Linux环境特性的开发验证。就拿搭建一个Flask博客后端来说,传统方式从零开始配置环境、编写…...

WSL+VSCode+Jupyter+R配置总结(2026年)

题记:网上相关的资料很多了,现阶段跟随AI也能少走很多弯路,但体验下来依旧有些细节没有被很好的提及,故写本文一方面作为自己的备忘录,一方面希望帮助更多像我一样的新手。 用了上述的配置跑了scanpy一年多了&#xf…...

告别重复编码:用Copaw结合快马平台,自动化生成你的常用工具模块

作为一名经常需要整理会议纪要的开发者,我一直在寻找能提升效率的工具。最近尝试用Copaw结合InsCode(快马)平台做了一个会议纪要自动生成器,效果出乎意料地好。整个过程几乎没写代码,却实现了核心功能,分享下具体实现思路&#xf…...

从 14 万美元支付事故看:AI 写的代码过了所有测试,为什么活不过生产?

我审计过的一家科技公司,曾因一段 AI 生成的异步支付处理代码,遭遇了一场灾难性的生产事故。这段代码完美通过了所有自动化检查、单元测试与集成测试,标注着「All checks passed」被顺利合并到生产环境,最终却触发了竞态条件与重复…...

FastAPI + SQLite:从基础CRUD到安全并发的实战指南

核心摘要本文将带你超越FastAPI SQLite的基础CRUD搭建,聚焦于安全防护(认证、授权、输入验证)与并发处理(数据库连接池、异步优化)两大实战痛点。你会获得一套可直接复用的项目骨架,并理解其背后的设计逻辑…...

MySQL

我目前正在学习SQL语句,我所了解到的MySQL其实是一堆服务器,在下载服务器的时候,可以选择下载一些客户端,MySQL会自带一些客户端,像类似于终端的小黑框,还有什么bench;我还是喜欢外观好看的客户端 !我学SQL语句目前学到了数据类型,有数值型的,字符型的,二进制型的,值得一提的是…...

OpenCore Legacy Patcher终极指南:让老旧Mac焕发新生的完整方案

OpenCore Legacy Patcher终极指南:让老旧Mac焕发新生的完整方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher&#xf…...

N_m3u8DL-CLI-SimpleG:Windows平台最简M3U8视频下载工具完全指南

N_m3u8DL-CLI-SimpleG:Windows平台最简M3U8视频下载工具完全指南 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 如果你正在寻找一款简单易用的M3U8视频下载工具&…...

一步步教你:星图平台部署Qwen3-VL:30B完整流程,Clawdbot飞书集成实战

一步步教你:星图平台部署Qwen3-VL:30B完整流程,Clawdbot飞书集成实战 想象一下这个场景:你的团队在飞书群里讨论产品设计,有人发了一张UI截图问“这个按钮位置是不是太靠下了?”;财务同事上传了一张发票照…...

Python智能内存回收实战:3种GC策略对比+4个生产级调优参数配置(附压测数据)

第一章:Python智能体内存管理策略生产环境部署在高并发、长生命周期的Python智能体服务中,内存管理直接影响系统稳定性与响应延迟。默认的CPython引用计数循环垃圾回收(GC)机制在动态对象频繁创建销毁的场景下易引发内存抖动和不可…...

如何用GPU加速的MediaPipe TouchDesigner插件实现实时视觉交互

如何用GPU加速的MediaPipe TouchDesigner插件实现实时视觉交互 【免费下载链接】mediapipe-touchdesigner GPU Accelerated MediaPipe Plugin for TouchDesigner 项目地址: https://gitcode.com/gh_mirrors/me/mediapipe-touchdesigner MediaPipe TouchDesigner插件是一…...

实战派指南:用MaPLe思路优化你的CLIP下游任务,附关键配置与避坑建议

实战派指南:用MaPLe思路优化你的CLIP下游任务,附关键配置与避坑建议 当CLIP遇上业务场景,90%的开发者都会遇到相同的问题:模型在新类别上的表现总是不尽如人意。上周团队用默认参数跑跨模态检索任务时,基类准确率82%的…...

大模型RL算法梳理:从全量词元到部分词元的路径演化

一、 引言:大模型强化学习算法的演化格局 近年来,以 OpenAI 的 o1 系列、DeepSeek 的 R1,以及 Qwen 系列模型为代表,大语言模型在数学证明、代码生成等长链路推理任务中展现出更强的稳定性与推理深度。 在这一背景下,面…...

ARP 协议超详细讲解

前言网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址&…...

Spring AI 流式输出底层原理解析

在 AI 应用开发中,流式输出早已成为提升用户体验的核心能力——像 ChatGPT 那样的打字机式实时回复,既能避免用户长时间干等,又能解决长连接超时问题,是 AI 产品的必备特性。 一、流式输出的两种技术,不是对立而是“底…...

【个人推荐】一些好用的录音转写工具

因为助教课备课的缘故,需要录制讲座的音频以整理知识点。一次讲座的音频内容很长,即使3x速快进播放依然很耗费时间,因此录音转写的需求浮现了出来。于是闲暇之余探索了下市面上的录音转写工具,浅浅记录下体验。 下面主要推荐三款…...

Ollama在Apple Silicon上预览,性能大提升

2026年3月30日,Ollama开启在Apple silicon上的预览,由苹果MLX框架支持,解锁新性能,加速繁重工作,还在多方面有显著改进。MLX驱动,性能飞升基于Apple silicon的Ollama构建在MLX框架上,利用统一内…...

聚点智行:WorkBuddy 辅助开发 AI 地图智能应用实战

一、从痛点到创意:一个真实场景的启发 作为一名经常组织朋友聚会的"社交达人",我遇到了一个看似简单却让人头疼的问题:每次约饭,大家都在问"在哪见?" 张三住在回龙观,李四在东直门&…...

【材料】吸波材料的电导损耗和极化损耗【含Matlab源码 15266期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab领域博客之家💞&…...

2026 年提词器 App 的新方向:AI 改稿 + 语速匹配,正在重新定义“读稿“这件事

核心结论:2026 年提词器 App 已经从"滚字幕"进化到"懂你怎么说"。AI 语速匹配、智能跟读、违禁词检测正在成为新标配,而在综合体验上,拍摄提词器是目前把这些能力整合得最完整的一款产品。一、提词器 App 正在经历一次代…...

微型LORA数传模块:科技赋能,传统楼宇智能蜕变

微型LoRa数传模块凭借小体积、低功耗、远距离、强穿透、易部署的核心优势,是智慧楼宇实现无线化、低成本、广覆盖物联网感知与控制的理想选择,尤其适合老旧楼宇改造与新建楼宇的轻量化智能化升级。一、核心优势(适配智慧楼宇场景)小体积易安装&#xff1…...

十分钟用快马AI搭建中科院期刊分区查询工具原型

最近在帮实验室整理投稿期刊清单时,发现中科院分区查询是个高频需求。每次都要登录官网、输入验证码、反复跳转页面,特别影响效率。于是想做个简易查询工具,正好用InsCode(快马)平台试试快速原型开发,没想到十分钟就搭出了可用版本…...

AI图像增强工具Real-ESRGAN-GUI:让模糊影像重获新生的完整指南

AI图像增强工具Real-ESRGAN-GUI:让模糊影像重获新生的完整指南 【免费下载链接】Real-ESRGAN-GUI Lovely Real-ESRGAN / Real-CUGAN GUI Wrapper 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-GUI 你是否曾遇到珍藏的老照片因年代久远变得模糊不…...