news 2026/6/10 15:11:11

Java基础笔记(继承)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java基础笔记(继承)

一、Java 继承的核心价值与基础概念

1. 继承的本质:复用与扩展

继承的核心思想是 “子类继承父类”,即子类(Subclass)通过extends关键字,获得父类(Superclass)的属性和行为(方法),同时可在子类中新增专属属性或重写父类方法,实现功能扩展。这种设计既减少了代码冗余,又让类之间形成清晰的层级关系,便于维护和扩展。

2. Java 的单继承特性

与部分编程语言支持多继承不同,Java 明确规定类只能单继承(一个子类只能有一个直接父类)。这一限制是为了避免多继承带来的 “菱形问题”(多个父类存在同名方法时的歧义),保证代码逻辑的简洁性。若需实现类似多继承的功能,可通过接口组合来弥补。

3. 继承的语法与层次结构

  • 基础语法:class 子类名 extends 父类名 {}
  • 继承层次:父类可再继承其他类,形成 “祖父类→父类→子类” 的层级结构,子类能访问父类及祖先类中允许访问的成员(受访问修饰符限制)。

二、继承的底层逻辑:对象创建与内存存储

1. 子类对象创建:父类优先初始化

课程重点强调:创建子类对象时,父类对象会先于子类对象创建。底层流程如下:

  1. 调用子类构造方法时,会隐式调用父类的无参构造方法(若父类无无参构造,需通过super()显式调用父类有参构造);
  2. 父类完成属性初始化和构造方法执行后,子类才会初始化自身属性并执行构造逻辑;
  3. 本质是 “先初始化父类成员,再初始化子类成员”,确保子类能正常复用父类的资源。

2. 继承中的内存存储机制

继承在内存中的核心逻辑是 “共享与独立并存”:

  • 父类的属性和方法会被所有子类对象共享,存储在方法区的类信息中;
  • 每个子类对象仅存储自身新增的属性(父类属性不会重复存储),调用父类方法时,通过类信息找到对应的方法执行;
  • 这种设计既节省内存空间,又保证了子类对象对父类资源的复用。

三、继承的核心语法:方法重写与方法重载

继承中最易混淆也最常用的两个概念的是方法重写(Override)方法重载(Overload),二者本质、规则完全不同,需精准区分。

1. 方法重写(Override):改写父类行为

  • 定义:子类中定义与父类方法名、参数列表、返回值类型完全一致的方法,用于改写父类方法的实现逻辑。
  • 核心规则:
    1. 访问修饰符:子类重写方法的访问权限不能低于父类(如父类是protected,子类可改为public,但不能改为private);
    2. 不能重写父类的final方法(final修饰的方法不可被修改);
    3. 重写方法需与父类方法的核心签名(方法名 + 参数列表)完全匹配。
  • 应用场景:子类需要沿用父类方法名称,但实现逻辑与父类不同(如动物类的move()方法,子类鸟的move()实现 “飞行”,子类狗的move()实现 “奔跑”)。

2. 方法重载(Overload):同一类中多态表现

  • 定义:在同一个类中,定义多个方法名相同、参数列表不同的方法(参数个数、类型或顺序不同),与返回值类型无关。
  • 核心规则:
    1. 方法名必须一致;
    2. 参数列表必须不同(核心区分依据);
    3. 可与继承结合(子类可重载父类方法,也可重载自身方法)。
  • 应用场景:同一功能有多种参数输入方式,需简化方法命名(如println()方法,支持intStringboolean等多种参数类型)。

3. 重写与重载的核心区别

对比维度方法重写(Override)方法重载(Overload)
存在范围子类与父类之间同一个类中
核心条件方法名、参数列表、返回值一致方法名相同,参数列表不同
访问修饰符子类权限≥父类权限无严格限制
与继承关系依赖继承可独立存在,也可结合继承

四、继承中的关键关键字:super 与 this

1. super 关键字:访问父类资源

super的核心作用是在子类中访问父类的成员,避免子类与父类成员命名冲突:

  • 调用父类构造方法:super(参数),必须放在子类构造方法的第一行;
  • 访问父类属性:super.父类属性名(当子类有同名属性时使用);
  • 调用父类方法:super.父类方法名(参数)(当子类重写了父类方法,仍需调用父类原方法时使用)。

2. this 关键字:指代当前对象

在继承场景中,this的作用主要是:

  • 区分当前对象的属性与局部变量(如this.name = name);
  • 调用当前类的其他构造方法(this(参数));
  • 明确指代当前对象,避免与父类成员混淆(如this.method()表示调用子类自身的方法,而非父类方法)。

五、继承的延伸:与抽象类、接口的关联

继承并非孤立存在,它与抽象类、接口的配合是 Java 实现多态和灵活设计的关键:

  • 抽象类:作为继承体系的 “模板类”,定义子类必须实现的抽象方法(通过abstract关键字),强制子类遵循统一的行为规范,同时可包含非抽象方法供子类复用;
  • 接口:弥补 Java 单继承的局限,一个类可实现多个接口(implements关键字),接口中定义的抽象方法(Java 8 + 后支持默认方法)需实现类全部实现,常用于定义 “行为规范”(如Runnable接口的run()方法)。

六、继承中的常见问题与注意事项

  1. 子类访问父类成员的限制:子类不能直接调用父类的私有(private)变量和方法,需通过父类提供的publicprotectedgetter/setter 方法访问;
  2. 构造方法的使用规则:父类若没有无参构造,子类必须通过super(参数)显式调用父类的有参构造,否则编译报错;
  3. 全局变量与局部变量冲突:继承中若子类与父类有同名全局变量,子类访问时默认优先使用自身变量,需通过super访问父类变量;
  4. 避免继承滥用:并非所有类都适合作为父类,若类之间没有明确的 “is-a” 关系(如 “狗是动物”),强行使用继承会导致类体系混乱,此时可考虑组合(“has-a” 关系)替代。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:58:59

如何快速掌握NS-USBLoader:从安装到实战的完整指南

如何快速掌握NS-USBLoader:从安装到实战的完整指南 【免费下载链接】ns-usbloader Awoo Installer and GoldLeaf uploader of the NSPs (and other files), RCM payload injector, application for split/merge files. 项目地址: https://gitcode.com/gh_mirrors/…

作者头像 李华
网站建设 2026/6/10 13:10:54

RTL8852BE驱动终极解决方案:告别Linux无线网络连接困扰

RTL8852BE驱动终极解决方案:告别Linux无线网络连接困扰 【免费下载链接】rtl8852be Realtek Linux WLAN Driver for RTL8852BE 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8852be 还在为Ubuntu系统下Realtek RTL8852BE无线网卡无法正常工作而烦恼吗&am…

作者头像 李华
网站建设 2026/6/9 18:47:49

Py-ART:气象雷达数据处理的全能解决方案

Py-ART:气象雷达数据处理的全能解决方案 【免费下载链接】pyart The Python-ARM Radar Toolkit. A data model driven interactive toolkit for working with weather radar data. 项目地址: https://gitcode.com/gh_mirrors/py/pyart 在气象数据分析领域&a…

作者头像 李华
网站建设 2026/6/10 14:10:02

Wan2.2-T2V-A14B与HuggingFace镜像网站集成部署技巧

Wan2.2-T2V-A14B与HuggingFace镜像网站集成部署技巧 在内容创作正经历AI重构的今天,如何高效生成高质量视频成为企业技术选型的关键命题。尤其是当文本到视频(Text-to-Video, T2V)模型开始从实验室走向生产线,开发者面临的不再只…

作者头像 李华
网站建设 2026/6/10 14:09:27

MapleStory WZ文件编辑完整指南:从入门到精通

MapleStory WZ文件编辑完整指南:从入门到精通 【免费下载链接】Harepacker-resurrected All in one .wz file/map editor for MapleStory game files 项目地址: https://gitcode.com/gh_mirrors/ha/Harepacker-resurrected 想要深度自定义你的MapleStory游戏…

作者头像 李华
网站建设 2026/6/10 0:53:12

PyTorch转ONNX尝试:加速Qwen-Image推理过程

PyTorch转ONNX尝试:加速Qwen-Image推理过程 在当前AIGC(人工智能生成内容)浪潮中,文生图模型正以前所未有的速度从实验室走向实际应用。以Qwen-Image为代表的200亿参数级多模态大模型,凭借其强大的语义理解与图像生成能…

作者头像 李华