JAVA之路(5)——继承和super关键字
1. 继承1.1 定义和语法让一个类子类 / 派生类获取另一个类父类 / 基类 / 超类的属性和方法相同的属性和方法不需要再次定义子类只中只需要声明自己独特的属性和方法。语法// 父类定义 class 父类名 { // 共性属性和方法 } // 子类继承父类 class 子类名 extends 父类名 { // 子类独有属性和方法 }1.2 继承的访问规则1.3 继承的使用细节1. 子类会继承父类的全部成员包括private但private成员在子类中不能直接访问必须通过父类提供的public/protected方法如 getter/setter间接操作。2. 创建子类对象时必须先初始化父类部分因此子类构造器必须调用父类构造器默认隐式调用super()。3. 默认调用父类无参构造器父类无无参构造器时子类必须显式用super指定4.显式调用父类指定构造器super(参数列表)class Father { // 父类只有有参构造器无无参构造器 public Father(String name) { System.out.println(父类有参构造器 name); } } class Son extends Father { public Son() { // ❌ 编译报错父类没有无参构造器必须显式调用super(参数) // 正确写法 super(父亲); // ✅ 必须放在首行指定调用父类有参构造器 System.out.println(子类构造器执行); } }5.super必须放在构造器第一行且仅能在构造器中使用6.super()和this()不能共存于一个构造器7. Java 所有类都是Object的子类java.lang.Object是 Java 的顶级父类任何类包括自定义类、数组、集合都直接或间接继承Object因此都拥有equals()、toString()、hashCode()等方法。8. 一个子类只能有一个直接父类但可以通过多层继承间接继承多个父类如 A→B→CA 间接继承 B 和 C。9. 继承不能滥用必须符合 “子类是父类的一种” 的语义比如Dog is a Animal合理Dog extends Book就不合理。1.4 继承的内存布局class GrandPa { String name 大头爷爷; String hobby 旅游; } class Father extends GrandPa { String name 大头爸爸; int age 39; } class Son extends Father { String name 大头儿子; public void showNames() { System.out.println(Sons name: this.name); // 大头儿子 System.out.println(Fathers name: super.name); // 大头爸爸 // 访问更上层GrandPa的name需要在Father中提供方法 } } public class ExtendsTheory { public static void main(String[] args) { Son son new Son(); son.showNames(); // 输出 // Sons name: 大头儿子 // Fathers name: 大头爸爸 } }栈 (main方法) ┌───────────────────────────┐ │ son 0X11 (堆中Son对象地址) │ └───────────────────────────┘ ↓ 引用指向 堆 (Son对象 0X11) ┌───────────────────────────┐ │ GrandPa区域 │ │ name → 0X22 │ │ hobby → 0X33 │ ├───────────────────────────┤ │ Father区域 │ │ name → 0X44 │ │ age 39 │ ├───────────────────────────┤ │ Son区域 │ │ name → 0X55 │ └───────────────────────────┘ ↓ 字符串引用指向 方法区 (常量池) ┌───────────────────────────┐ │ 大头爷爷 → 0X22 │ │ 旅游 → 0X33 │ │ 大头爸爸 → 0X44 │ │ 大头儿子 → 0X55 │ └───────────────────────────┘ 方法区 (类继承链) ┌───────────────────────────┐ │ Object ← GrandPa ← Father ← Son │ └───────────────────────────┘当执行Son son new Son();时JVM 首先在方法区加载GrandPa、Father、Son的类信息并构建继承链Object ← GrandPa ← Father ← Son同时将 大头爷爷 大头爸爸 等字符串常量存入方法区的常量池接着在堆内存中创建地址为0X11的Son对象实例该对象按继承层级分为三层独立区域 —— 最上层是GrandPa区域存储name指向常量池0X22、hobby指向0X33中间层是Father区域存储name指向0X44、age直接存值 39最下层是Son区域存储name指向0X55三层区域完整包含所有父类和子类的属性且同名属性互不覆盖最后在栈内存的main方法栈帧中创建引用变量son存储堆中Son对象的地址0X11当通过son.name或super.name访问属性时JVM 会根据this/super关键字定位到堆中对应层级的属性区域再通过区域内的地址指向方法区常量池获取具体字符串值。2. super关键字2.1 用法用法作用注意事项super.属性名访问父类的属性尤其子类有同名属性时不能访问父类private属性super.方法名(参数)调用父类的方法尤其子类重写了父类方法时不能调用父类private方法super(参数)调用父类的构造器必须放在子类构造器的首行无参时默认调用super()不能和this()共存2.2 使用细节1. 当子类和父类存在同名属性或方法时默认访问的是子类自己的成员如果要访问父类的同名成员必须使用super.成员名来明确指定。如果成员没有重名那么super.成员名、this.成员名、直接写成员名这三种写法效果完全一致都会向上查找到可用的成员。class Father { String name 大头爸爸; int age 39; public void sayHello() { System.out.println(父类你好); } } class Son extends Father { // 与父类同名的属性 String name 大头儿子; // 与父类同名的方法 Override public void sayHello() { System.out.println(子类哈喽); } public void testAccess() { // 1. 同名成员必须用super访问父类 System.out.println(this.name); // 输出大头儿子默认访问子类 System.out.println(super.name); // 输出大头爸爸访问父类 this.sayHello(); // 输出子类哈喽 super.sayHello(); // 输出父类你好 // 2. 无重名成员三种写法效果一样 System.out.println(age); // 输出39 System.out.println(this.age); // 输出39 System.out.println(super.age); // 输出39 } } public class Test { public static void main(String[] args) { Son son new Son(); son.testAccess(); } }2.super不仅可以访问直接父类还能访问更上层的父类比如爷爷类从当前类的直接父类开始向上查找找到第一个同名且可访问的成员就使用它否则报错2.3 super 和 this 的比较

相关新闻

2026.03 VSCODE + ESP-IDF ST7789V液晶屏 显示 取模小知识

2026.03 VSCODE + ESP-IDF ST7789V液晶屏 显示 取模小知识

环境开发环境:VSCODE ESP-IDF开发板:信盈达ESP32-S3-N16*R8开发板使用的是D200C2407V0液晶屏,液晶屏的IC是ST7789V屏幕是如何显示的屏幕是由一个个像素组成的,一个像素一般由三原色组成,红绿蓝,RGB&#x…

2026/7/3 18:46:54 阅读更多 →
跨境电商日报 | 2026年3月12日:外贸法新增数字贸易条款·深圳卖家增长超预期·行业步入合规化深水区

跨境电商日报 | 2026年3月12日:外贸法新增数字贸易条款·深圳卖家增长超预期·行业步入合规化深水区

【今日热点】 ① 新《对外贸易法》正式施行,数字贸易纳入法律框架 3月1日起,新修订的《中华人民共和国对外贸易法》正式生效,条文由69条扩充至83条。新法首次将数字贸易、跨境电商等新业态以法律形式固定下来,并明确“国家支持对外…

2026/7/3 19:23:08 阅读更多 →
救命神器! 千笔·专业降AI率智能体,本科生论文降重首选

救命神器! 千笔·专业降AI率智能体,本科生论文降重首选

在AI技术日益渗透学术写作的当下,越来越多的本科生开始借助AI工具提升论文写作效率。然而,随着各大查重系统对AI生成内容的识别能力不断提升,如何有效降低AI率和重复率成为困扰许多学生的难题。面对市场上琳琅满目的降AI工具,学生…

2026/7/3 22:42:22 阅读更多 →

最新新闻

文心5.0高分低能?真实业务场景下的能力压力测试报告

文心5.0高分低能?真实业务场景下的能力压力测试报告

1. 项目概述:一场关于大模型能力边界的务实讨论“文心5.0正式版是不是高分低能?”——这句话在技术社区、产品团队和内容创作者圈子里,最近两个月被反复提起。它不是一句情绪化吐槽,而是一个带着实测数据、业务反馈和落地卡点的真…

2026/7/4 4:48:20 阅读更多 →
PCB阻抗设计实战:基于嘉立创480种叠层模板的4层板50Ω单端线宽计算

PCB阻抗设计实战:基于嘉立创480种叠层模板的4层板50Ω单端线宽计算

PCB阻抗设计实战:基于嘉立创480种叠层模板的4层板50Ω单端线宽计算在高速PCB设计中,阻抗控制是确保信号完整性的关键因素。随着信号频率的不断提升,传统的"连通即可"布线理念已无法满足现代电子产品的需求。本文将聚焦如何利用嘉立…

2026/7/4 4:46:19 阅读更多 →
当Source引擎遇上Blender:如何让游戏资源在3D创作中重生?

当Source引擎遇上Blender:如何让游戏资源在3D创作中重生?

当Source引擎遇上Blender:如何让游戏资源在3D创作中重生? 【免费下载链接】SourceIO SourceIO is an Blender(4.0) addon for importing source engine textures/models/maps 项目地址: https://gitcode.com/gh_mirrors/so/SourceIO 你是否曾经面…

2026/7/4 4:44:18 阅读更多 →
(论文速读)DEnet:零参考联合去噪与增强

(论文速读)DEnet:零参考联合去噪与增强

论文题目:INTERPRETABLE UNSUPERVISED JOINT DENOISING AND ENHANCEMENT FOR REAL-WORLD LOW-LIGHT SCENARIOS(用于实际微光场景的可解释无监督联合去噪和增强) 会议:ICLR2025 摘要:现实世界中的弱光图像经常会出现复…

2026/7/4 4:40:15 阅读更多 →
如何在Windows上快速部署Android应用:专业级APK安装器完整指南

如何在Windows上快速部署Android应用:专业级APK安装器完整指南

如何在Windows上快速部署Android应用:专业级APK安装器完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想要在Windows电脑上直接运行手机…

2026/7/4 4:40:15 阅读更多 →
转:普遍不认可,但大家都遵从

转:普遍不认可,但大家都遵从

个人理解: 沉默的螺旋 每个人都不相信,每个人也知道每个人不相信,但每个人都说自己相信 每个人以为每个其他人都信,每个人在公开场合都说自己信 张维迎:普遍不认可,但大家都遵从 张维迎:普遍不…

2026/7/4 4:38:14 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻