0

0

Java类的继承与多级继承的核心概念

P粉602998670

P粉602998670

发布时间:2026-01-06 16:52:02

|

462人浏览过

|

来源于php中文网

原创

java类只支持单继承,通过extends关键字只能继承一个父类,多继承需用接口实现;构造器链需显式维护;protected成员跨包仅限继承访问;重写object方法需注意连锁影响。

java类的继承与多级继承的核心概念

Java中extends关键字只支持单继承,不支持多继承

Java类不能同时继承多个父类,这是语言层面的硬性限制。比如写class C extends A, B会直接编译失败,报错error: class C inherits from multiple classes(实际错误信息是error: '{' expectederror: invalid type,因为语法不合法)。

设计上强制单继承是为了避免菱形继承问题(如C++中的二义性),也简化了方法解析和内存布局。如果需要复用多个类的行为,应改用接口(interface)+ 实现(implements)组合。

  • 一个类可以extends一个类,同时implements多个接口
  • 接口之间可以用extends多继承(如interface I3 extends I1, I2
  • 抽象类也可以被继承,且可含抽象/具体方法

多级继承中super调用链必须显式维护

A → B → C三级继承时,子类构造器默认不会自动触发祖父类构造器。若父类B没有无参构造器,而C的构造器里没写super(...),就会编译报错constructor B in class B cannot be applied to given types

关键点在于:每级子类构造器的第一条语句,必须明确调用其直接父类的某个构造器(隐式super()也算),否则无法完成初始化链。

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

全诚易惠通优惠打折管理系统
全诚易惠通优惠打折管理系统

全诚易惠通优惠折扣信息店铺管理系统是全诚团队继 “全诚商城”“外卖通” 之后又一新概念重量级作品,该系统以收集本地所有店铺优惠折扣信息为核心,在构思、设计、代码处理上都做了严密的部署和检查,继承了全诚系列产品核心模块的基础上进化而来,即为新作品,也系高度成熟度的作品,加之全诚团队精心技术支持,可为用户营造一个长期可靠的系统运行环境。本系统较易惠通相比,业务和经营范围覆盖面积更广更大,可涵盖本地所有

下载
  • B的构造器里若写了super(x),那是调用A的构造器;C里写的super(y),只调用B的构造器,不跳过
  • 字段遮蔽(field hiding)会发生:子类定义同名public int x,会隐藏父类的x,访问需用super.x
  • 方法重写(override)遵循动态绑定,但静态方法、私有方法不参与多态

多级继承下protected成员的可见性容易误判

protected不是“包内+子类可见”那么简单。它允许:同一包内任意类访问;不同包中,仅该类的子类(无论几级)可通过继承关系访问,但不能通过其他对象引用访问。

例如Apkg1中声明protected void f()C extends B extends Apkg2中——C内部可直接调用f(),但C中写new A().f()会编译失败,提示f() has protected access in A

  • protected字段/方法在子类中如同自己声明的一样可用(无需super.前缀)
  • 但如果父类在不同包,且子类想访问**另一个同级子类对象**的protected成员,仍不可见
  • 过度依赖protected会增加耦合,现代设计更倾向封装+getter/setter

Object是所有类的隐式顶层父类,但toString()等方法不自动“穿透”多级

即使没写extends Object,每个类都默认继承Object。但像toString()这种非final方法,只要中间某一级(比如B)重写了它,那么C调用toString()时执行的就是B的版本,除非C自己再重写或显式调用super.toString()

容易忽略的是:getClass()hashCode()wait()这些final或本地实现的方法,子类无法覆盖,但行为仍由运行时类型决定。

  • 重写equals()时必须同步重写hashCode(),否则哈希容器行为异常
  • instanceof判断的是实际运行时类型,与继承层级深度无关
  • 反射获取getDeclaredMethods()只返回本类声明的方法,要向上遍历需手动调用getSuperclass()
class A { void m() { System.out.println("A"); } }
class B extends A { @Override void m() { System.out.println("B"); } }
class C extends B { void n() { super.m(); } } // 这里super.m()调的是B.m(),不是A.m()
多级继承本身不难理解,真正容易出问题的,是构造器链断裂、protected访问边界模糊、以及对Object方法重写的连锁影响——这些地方一疏忽,编译期可能不报错,但运行时逻辑就偏了。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

27

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

27

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

27

2025.11.27

scripterror怎么解决
scripterror怎么解决

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

492

2023.10.18

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

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

382

2023.10.25

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1010

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

611

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

334

2025.08.29

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

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

精品课程

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

共23课时 | 4.3万人学习

C# 教程
C# 教程

共94课时 | 11.1万人学习

Java 教程
Java 教程

共578课时 | 80.7万人学习

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

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