Java继承中super的使用方法

super 关键字在 Java 中用于访问父类的成员(包括字段、方法和构造函数)。当你在子类中调用父类的方法或访问父类的成员变量时,super 是必不可少的工具。

🔑 super 的基本用法

1. 调用父类的构造方法

在子类的构造方法中,你可以通过 super() 来调用父类的构造方法。如果父类没有默认的无参构造方法,你必须显式地调用父类的构造方法。

class Parent {Parent() {System.out.println("父类构造方法");}
}class Child extends Parent {Child() {super();  // 显式调用父类的构造方法System.out.println("子类构造方法");}
}public class Test {public static void main(String[] args) {new Child();}
}

输出

父类构造方法
子类构造方法

解释

  • super() 调用父类的构造方法。如果不写 super(),Java 会隐式地调用父类的无参构造方法。

  • super 必须是子类构造函数中的第一行代码。

2. 调用父类的方法

如果子类重写了父类的方法,但你仍然想在子类中调用父类版本的方法,可以使用 super 来调用父类的方法。

class Parent {void show() {System.out.println("父类的 show()");}
}class Child extends Parent {@Overridevoid show() {super.show();  // 调用父类的 show() 方法System.out.println("子类的 show()");}
}public class Test {public static void main(String[] args) {Child c = new Child();c.show();}
}

输出

父类的 show()
子类的 show()

解释

  • super.show() 调用父类的 show() 方法,子类在调用后自己继续执行。

3. 访问父类的字段

如果子类和父类有同名的字段,子类访问时可以通过 super 来访问父类的字段,避免与子类的字段混淆。

class Parent {String name = "父类的名称";
}class Child extends Parent {String name = "子类的名称";void display() {System.out.println("子类的字段: " + name);System.out.println("父类的字段: " + super.name);  // 使用 super 访问父类的字段}
}public class Test {public static void main(String[] args) {Child c = new Child();c.display();}
}

输出

子类的字段: 子类的名称
父类的字段: 父类的名称

解释

  • super.name 访问的是父类的 name 字段,而 name 没有 super 的情况下则访问子类的 name 字段。

4. 调用父类的带参构造方法

如果父类有带参数的构造方法,你可以通过 super() 传递参数来调用父类的构造方法。

class Parent {Parent(String name) {System.out.println("父类的构造方法,name: " + name);}
}class Child extends Parent {Child(String name) {super(name);  // 调用父类带参构造方法System.out.println("子类的构造方法");}
}public class Test {public static void main(String[] args) {new Child("Tom");}
}

输出

父类的构造方法,name: Tom
子类的构造方法

解释

  • super(name) 通过传递参数 name 来调用父类的带参构造方法。


🧠 super 的应用场景总结

使用场景描述
调用父类构造方法super() 用于调用父类构造方法,可以调用无参或带参的父类构造方法。
调用父类方法super.methodName() 用于调用父类的方法,尤其是子类重写了父类的方法时。
访问父类字段super.fieldName 用于访问父类中定义的字段,避免与子类字段同名冲突。

🔥 super 的限制与注意事项

  1. 不能用于访问父类的私有成员

    • super 无法直接访问父类的私有方法或私有字段。如果父类的成员是私有的,则只能通过公共的 getter/setter 方法访问。

  2. super 不能在静态上下文中使用

    • super 是与实例(对象)相关的,而静态方法与类相关,所以不能在静态方法中使用 super

  3. super() 必须在构造方法的第一行

    • 如果子类的构造方法需要调用父类构造方法,super() 必须在构造方法的第一行,否则会编译错误。


💡 示例:综合应用

class Animal {String type;Animal(String type) {this.type = type;}void speak() {System.out.println("动物发出声音");}
}class Dog extends Animal {String name;Dog(String type, String name) {super(type);  // 调用父类的构造方法this.name = name;}@Overridevoid speak() {super.speak();  // 调用父类的 speak 方法System.out.println(name + " 叫:汪汪!");}
}public class Test {public static void main(String[] args) {Dog dog = new Dog("哺乳动物", "小狗");dog.speak();}
}

输出

动物发出声音
小狗 叫:汪汪!

总结:

  • super 是 Java 中用于访问父类成员的关键字,能够帮助你调用父类的构造方法、方法、字段等。

  • 你可以利用 super 来解决子类与父类同名方法、字段的冲突,并且能清晰地访问父类的方法和属性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/903649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全之浅析Java反序列化题目

前言 这段时间做了几道Java反序列化题目,发现很多题目都是类似的,并且可以通过一些非预期gadget打进去,就打算总结一下常见的题目类型以及各种解法,并提炼出一般性的思维方法。 正文 分析入口点 拿到题目,有附件最…

动态规划问题,下降路径最小和(dp初始化问题,状态压缩),单词拆分(回溯法+剪枝+记忆化),substr函数

下降路径最小和 题目链接: 931. 下降路径最小和 - 力扣(LeetCode) 题目描述: 给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开…

大数据治理自动化与智能化实践指南:架构、工具与实战方案(含代码)

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:从人治到机治,数据治理正在进化 随着数据体量持续膨胀、数据场景复杂化,传统依赖人工规则的大数据治理方式已难以为继。企业在治理过程中面临: 数据质量问题激增,人工检测成本高 元数…

Golang - 实现文件管理服务器

先看效果: 代码如下: package mainimport ("fmt""html/template""log""net/http""os""path/filepath""strings" )// 配置根目录(根据需求修改) //var ba…

Linux-04-用户管理命令

一、useradd添加新用户: 基本语法: useradd 用户名:添加新用户 useradd -g 组名 用户:添加新用户到某个组二、passwd设置用户密码: 基本语法: passwd 用户名:设置用户名密码 三、id查看用户是否存在: 基本语法: id 用户名 四、su切换用户: 基本语法: su 用户名称:切换用…

Ollama 安装 QWen3 及配置外网访问指南

一、Ollama 安装 QWen3 安装步骤 首先尝试运行 QWen3 模型: ollama run qwen3 如果遇到版本不兼容错误(Error 412),表示需要升级 Ollama: curl -fsSL https://ollama.com/install.sh | sh 验证版本: o…

高性能架构设计-数据库(读写分离)

一、高性能数据库简介 1.高性能数据库方式 读写分离:将访问压力分散到集群中的多个节点,没有分散存储压力 分库分表:既可以分散访问压力,又可以分散存储压力 2.为啥不用表分区 如果SQL不走分区键,很容易出现全表锁…

【Hive入门】Hive性能优化:执行计划分析EXPLAIN命令的使用

目录 1 EXPLAIN命令简介 1.1 什么是EXPLAIN命令? 1.2 EXPLAIN命令的语法 2 解读执行计划中的MapReduce阶段 2.1 执行计划的结构 2.2 Hive查询执行流程 2.3 MapReduce阶段的详细解读 3 识别性能瓶颈 3.1 数据倾斜 3.2 Shuffle开销 3.3 性能瓶颈识别与优化 4 总结 在大…

开源模型应用落地-qwen模型小试-Qwen3-8B-快速体验(一)

一、前言 阿里云最新推出的 Qwen3-8B 大语言模型,作为国内首个集成“快思考”与“慢思考”能力的混合推理模型,凭借其 80 亿参数规模及 128K 超长上下文支持,正在重塑 AI 应用边界。该模型既可通过轻量化“快思考”实现低算力秒级响应,也能在复杂任务中激活深度推理模式,以…

Kafka Producer的acks参数对消息可靠性有何影响?

1. acks0 可靠性最低生产者发送消息后不等待任何Broker确认可能丢失消息(Broker处理失败/网络丢失时无法感知)吞吐量最高,适用于允许数据丢失的场景(如日志收集) 2. acks1 (默认值) Leader副本确认模式生产者等待Le…

虚拟机centos7安装docker

虚拟机CentOS 7上安装 Docker流程 1. 更新系统软件包 需要确保系统软件包是最新的 sudo yum -y update sudo:以超级用户权限执行命令。 yum:CentOS的包管理器工具。 -y:自动确认所有提示,直接执行。 2. 安装 Docker 依赖 在安装 …

ZYNQ MPSOC之PL与PS数据交互DMA方式

ZYNQ MPSOC之PL与PS数据交互DMA方式 1 摘要 XILINX ZYNQ 以及 ZYNQ MPSOC主要优势在于异构 ARM+FPGA。其中非常关键的一点使用了 AXI 总线进行高速互联。而且这个 AXI 总线是开放给我们用户使用的。在前面的文章中我们详解了使用了AXI-HP方式PL到PS端进行数据交互。本文主要涉…

枚举法——C++算法【泪光2929】

前言 "打牢基础,万事不愁" .C的基础语法的学习."学以致用,边学边用",编程是实践性很强的技术,在运用中理解,总结. 引入 枚举在成熟框架中,用得还挺多的.枚举可以让程序更容易理解 之前写过一篇关于枚举的帖子--- 白话编程---数据篇(4)枚…

HarmonyOS NEXT应用开发-Notification Kit(用户通知服务)notificationManager.cancelAll

1.notificationManager.cancelAll 支持设备Phone2in1TabletCarWearable cancelAll(callback: AsyncCallback<void>): void 取消当前应用所有已发布的通知。使用callback异步回调。 系统能力&#xff1a;SystemCapability.Notification.Notification 示例&#xff1a; …

Mac 创建QT按钮以及一些操作

在创建QT项目好 后我们打开mainwindow.cpp&#xff0c;下面所示的代码都是在这个cpp文件里面因为它是窗口的入口函数 #include "mainwindow.h" #include "ui_mainwindow.h" #include<QPushButton>//按钮的头文件MainWindow::MainWindow(QWidget *pa…

开源协议全解析:类型、选择与法律风险规避指南

[TOC] 在当今开源软件主导的技术生态中&#xff0c;开源协议&#xff08;Open Source License&#xff09;是决定项目能否被商业使用、二次开发的关键法律文件。据统计&#xff0c;GitHub上超过70%的项目使用某种形式的开源协议&#xff0c;但其中近30%存在协议兼容性问题。本…

TM1668芯片学习心得一

一、TM1668 是一种带键盘扫描接口的LED&#xff08;发光二极管显示器&#xff09;驱动控制专用电路&#xff0c;内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。本产品性能优良&#xff0c;质量可靠。主要应用于VCR。 学习链接 二、 三、显示寄存器的地址…

时空特征如何融合?LSTM+Resnet有奇效,SOTA方案预测准确率超91%

LSTM有着不错的时序信息提取能力&#xff0c;ResNet有着不错的空间特征信息提取能力。如果现在有时空特征融合的创新需求&#xff0c;我们是否能将LSTM和ResNet两者的优点融合起来呢&#xff1f; 随着这个思路下去&#xff0c;LSTM ResNet混合模型横空出世&#xff0c;在各个…

[PRO_A7] SZ501 FPGA开发板简介

SZ501 FPGA开发板简介 概述 SZ501 FPGA开发板是专为高性能FPGA设计、快速原型开发和复杂应用调试打造的先进开发平台。搭载Xilinx Artix-7系列XC7A100T FPGA芯片&#xff0c;SZ501提供卓越的逻辑运算能力和灵活的接口支持&#xff0c;广泛适用于通信、信号处理、嵌入式系统及…

企业微信jdk 授权 记录

1、npm install wecom/jssdk 2、index.html 引入 <script src"https://wwcdn.weixin.qq.com/node/open/js/wecom-jssdk-2.0.2.js"></script> 3、创建js import * as ww from "wecom/jssdk"; /*** 获取企业微信jdk局方法----------------…