news 2026/5/26 8:37:06

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/5/26 5:19:30

Transformer注意力机制如何提升Qwen-Image-Edit-2509编辑精度

Transformer注意力机制如何提升Qwen-Image-Edit-2509编辑精度 在电商运营人员每天面对成百上千张商品图需要更新的今天,一个常见的场景是:某款T恤的颜色变了,但拍摄背景和模特姿势不变。传统做法是重新拍摄或打开Photoshop手动换色——耗时、…

作者头像 李华
网站建设 2026/5/26 5:29:01

抖音视频批量下载神器使用完整教程

抖音视频批量下载神器使用完整教程 【免费下载链接】douyinhelper 抖音批量下载助手 项目地址: https://gitcode.com/gh_mirrors/do/douyinhelper 还在为手动保存抖音视频而烦恼吗?想要高效收集喜欢的创作者内容却不知从何下手?抖音批量下载助手正…

作者头像 李华
网站建设 2026/5/26 6:34:27

如何用浏览器快速调试串口设备:Web串口助手的完整使用指南

如何用浏览器快速调试串口设备:Web串口助手的完整使用指南 【免费下载链接】SerialAssistant A serial port assistant that can be used directly in the browser. 项目地址: https://gitcode.com/gh_mirrors/se/SerialAssistant 在物联网开发和嵌入式系统调…

作者头像 李华
网站建设 2026/5/26 5:51:38

大模型微调--Dora微调

https://arxiv.org/pdf/2402.09353 DoRA: Weight-Decomposed Low-Rank AdaptationDoRA: Weight-Decomposed Low-Rank Adaptation DoRA(Weight-Decomposed Low-Rank Adaptation)是一种用于大模型微调的高效参数优化方法,通过分解权重矩阵并结合…

作者头像 李华
网站建设 2026/5/26 5:51:04

MoE负载均衡策略

MoE负载均衡策略概述 混合专家模型(Mixture of Experts, MoE)中的负载均衡策略旨在合理分配输入样本到各专家网络,避免某些专家过载或闲置。核心目标是提升模型计算效率,确保专家资源利用率最大化。 负载均衡策略实现方法 基于门控…

作者头像 李华
网站建设 2026/5/26 4:58:10

MouseClick:革命性鼠标连点器如何彻底改变你的工作效率?

MouseClick:革命性鼠标连点器如何彻底改变你的工作效率? 【免费下载链接】MouseClick 🖱️ MouseClick 🖱️ 是一款功能强大的鼠标连点器和管理工具,采用 QT Widget 开发 ,具备跨平台兼容性 。软件界面美观…

作者头像 李华