news 2026/4/23 17:36: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/4/23 10:21:41

音乐格式转换新思路:三步告别加密音频的束缚

音乐格式转换新思路:三步告别加密音频的束缚 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gitcod…

作者头像 李华
网站建设 2026/4/23 10:21:55

使用PyTorch微调Seed-Coder-8B-Base适配私有代码库

使用PyTorch微调Seed-Coder-8B-Base适配私有代码库 在现代软件研发体系中,一个日益突出的矛盾逐渐浮现:通用大模型虽然具备强大的代码生成能力,却难以真正“理解”企业内部特有的技术语境。你有没有遇到过这样的场景?——Copilot…

作者头像 李华
网站建设 2026/4/23 10:23:47

Wan2.2-T2V-5B模型在JLink驱动调试可视化中的创新应用

Wan2.2-T2V-5B模型在JLink驱动调试可视化中的创新应用 在嵌入式系统开发中,一个看似简单的LED闪烁程序也可能隐藏着复杂的时序问题。开发者面对满屏的日志输出:“0.45s: entering sleep mode”,“1.87s: EXTI interrupt triggered”&#xff…

作者头像 李华
网站建设 2026/4/23 11:46:35

使用Wan2.2-T2V-A14B生成动态广告内容,提升营销转化率

使用Wan2.2-T2V-A14B生成动态广告内容,提升营销转化率 在电商平台的618大促前夜,一支原本计划投放的主推广告因代言人突发舆情被紧急叫停。传统制作流程下,重新拍摄、剪辑至少需要5天——但距离活动上线只剩36小时。最终团队通过一条结构化文…

作者头像 李华
网站建设 2026/4/23 11:51:29

腾讯混元HunyuanVideo-Foley模型镜像上线GitHub,支持一键部署与音效同步

腾讯混元HunyuanVideo-Foley模型镜像上线GitHub,支持一键部署与音效同步 在短视频日均产量突破千万条的今天,一个被长期忽视却至关重要的问题浮出水面:大多数UGC内容听起来“假”——脚步声像是贴上去的,关门声总慢半拍&#xff0…

作者头像 李华
网站建设 2026/4/23 11:46:20

Seed-Coder-8B-Base深度解析:80亿参数如何改变代码生成格局

Seed-Coder-8B-Base深度解析:80亿参数如何改变代码生成格局 在今天的软件开发现场,你是否曾遇到这样的场景?一位工程师盯着屏幕,手指悬停在键盘上迟迟未动——不是因为思路卡壳,而是面对一段重复的数据处理逻辑&#x…

作者头像 李华