0

0

Java中的继承 (Inheritance)_使用extends实现代码复用

P粉602998670

P粉602998670

发布时间:2026-02-16 13:12:10

|

782人浏览过

|

来源于php中文网

原创

java中extends复用的是父类public和protected成员;private字段和构造器不被继承,但可通过super()调用;static方法可继承不可重写;子类构造器必须第一句调用super();重写方法应调用super逻辑;多层继承易导致耦合与维护问题。

java中的继承 (inheritance)_使用extends实现代码复用

Java里用extends继承父类,到底复用了什么?

不是所有代码都能被子类直接用。只有publicprotected成员(字段、方法)能被继承;private字段和构造器不会被继承,但子类可以通过super()调用父类构造器来参与初始化。

  • 子类不能访问父类private字段,哪怕同包也不行——常见错误是以为“同包就能绕过”
  • default(包私有)成员只在同包下可访问,跨包子类拿不到,别误判为“继承失败”
  • 父类的static方法会被继承,但无法被重写(只能隐藏),调用时看引用类型而非实际对象类型

子类构造器必须显式或隐式调用super()

Java编译器会在子类无参构造器第一行自动插入super(),但只要父类没无参构造器,就会报错:Constructor not defined。这不是语法糖失效,而是JVM强制要求对象初始化链完整。

  • 如果父类只有带参构造器,子类每个构造器都得用super(...)明确调用其中一个
  • super()必须是构造器第一句,否则编译不通过;放第二行?直接error: call to super must be first statement
  • 别想用this()代替super()——它只是调本类其他构造器,最终仍要落到super()

重写toString()equals()这些方法时,记得调super逻辑

很多初学者重写时从头手写,结果丢掉父类已有的字段逻辑。比如父类Personname,子类Student加了id,但toString()里只拼idname就没了。

Cleanup.pictures
Cleanup.pictures

智能移除图片中的物体、文本、污迹、人物或任何不想要的东西

下载
  • 重写toString()建议用super.toString() + ", id=" + this.id,而不是另起炉灶
  • equals()里先if (!super.equals(obj)) return false;,再检查子类特有字段,否则父类字段比较被跳过
  • 漏掉super.hashCode()会导致HashMap里同一对象存两次——因为hashCode()equals()不一致

继承深度超过两层就要警惕设计问题

Java支持多层继承(A → B → C),但每多一层,耦合就加重一分。父类一改,所有下游子类都可能崩,尤其是当父类暴露了protected方法供子类覆写时,语义契约极难维护。

立即学习Java免费学习笔记(深入)”;

  • 三层以上继承链中,protected方法的实际调用路径常被忽略,调试时容易误判“谁改了这个值”
  • Android开发里常见Activity → AppCompatActivity → FragmentActivity → ComponentActivity,这种是框架强依赖,业务代码别学
  • 多数时候,组合(has-a)比继承(is-a)更可控:把父类逻辑抽成HelperService,用字段持有,而不是拉长继承树

继承不是“写个extends就完事”,关键在父子之间的契约是否清晰、变更是否可预期。最麻烦的从来不是语法,而是某个protected方法在第4层子类里被悄悄重写了,而没人记得它还影响着初始化顺序。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

813

2023.08.22

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

813

2023.08.22

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

813

2023.08.22

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

351

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

339

2023.10.25

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

229

2023.12.07

android开发三大框架
android开发三大框架

android开发三大框架是XUtil框架、volley框架、ImageLoader框架。本专题为大家提供android开发三大框架相关的各种文章、以及下载和课程。

315

2023.08.14

android是什么系统
android是什么系统

Android是一种功能强大、灵活可定制、应用丰富、多任务处理能力强、兼容性好、网络连接能力强的操作系统。本专题为大家提供android相关的文章、下载、课程内容,供大家免费下载体验。

1790

2023.08.22

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

145

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 3.6万人学习

C# 教程
C# 教程

共94课时 | 9.5万人学习

Java 教程
Java 教程

共578课时 | 66.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号