Java关键字 —— super 详细解释!一看就懂 有代码实例运行!

super在父类、子类相关联的操作中经常被用到

super 是Java中的关键字,用于引用父类(超类)的成员变量、方法或构造函数。它有以下主要用途:

  1. 访问父类中的成员变量
  2. 调用父类中的构造方法
  3. 调用父类中的方法

在没有继承和被继承关系的类中,几乎不被使用

我个人喜欢将super理解为 “父类的”, “引用父类的”

1、访问父类的成员变量

使用 super 关键字可以在子类中访问父类中的成员变量。这对于在子类中有相同名字的成员变量时很有用,以便明确指定你想要访问的是父类的成员变量。

package com.sky.test;class Parent {int x = 10;
}class Child extends Parent {int x = 20;void display() {System.out.println(super.x); // 访问父类的x变量    10 System.out.println(this.x);    // 访问子类的x变量  20}
}public class Main {public static void main(String[] args) {Child child = new Child();child.display();}
}

class Animal {String name = "Animal"; // 父类的成员变量void printName() {System.out.println(name); // 打印父类的成员变量}
}class Dog extends Animal {String name = "Dog"; // 子类的成员变量void displayNames() {System.out.println(name);     // 打印子类的成员变量System.out.println(super.name); // 打印父类的成员变量}
}public class Main {public static void main(String[] args) {Dog myDog = new Dog();myDog.printName();    // 输出:Animal(调用父类方法)myDog.displayNames(); // 输出:Dog(子类成员变量),Animal(父类成员变量)}
}

 

2、调用父类中的构造方法

在子类的构造函数中使用 super 关键字可以调用父类的构造函数。这通常用于初始化父类的成员变量或执行父类构造函数的逻辑。

经常用在下面这种情况,类中有些变量是子类继承父类的

利用super可调用父类的构造方法将其赋值

class Parent {int x;Parent(int x) {this.x = x;}
}class Child extends Parent {int y;Child(int x, int y) {super(x); // 调用父类构造函数  将x赋值this.y = y;}// @Override 不理解也没事,不带上这个注解一样能正常运行@Override  // java中的注解 此处的意思是表明此方法是重写过的方法public String toString() {   // 返回带上child的成员变量值的字符串 x和yreturn "Child{" +"y=" + y +", x=" + x +'}';}
}public class Main {public static void main(String[] args) {Child child = new Child(10, 20);System.out.println(child.toString());}
}

3、调用父类中的方法

使用 super 关键字可以在子类中显式调用父类的方法。这在子类重写父类的方法时特别有用,以便在子类中可以调用父类的版本。

class Parent {void print() {System.out.println("Parent's print method");}
}class Child extends Parent {@Overridevoid print() {super.print(); // 调用父类的print方法System.out.println("Child's print method");}
}public class Main {public static void main(String[] args) {Child child = new Child();child.print();}
}

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

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

相关文章

Macos数据库管理:Navicat Premium 中文

Navicat Premium提供了直观且易用的图形用户界面,使得操作更为便捷。Navicat Premium 中文支持多种数据库系统,如MySQL、MariaDB、Oracle、SQLite、PostgreSQL等,可以让用户在同一平台上管理不同类型的数据库。Navicat Premium拥有强大的数据…

elasticsearch常用命令

Elasticsearch概念 ElasticsearchmysqlIndex(索引)数据库Type(类型)表Documents(文档)行Fields列 常用命令 索引 # 索引初始化,number_of_shards:分片数,不可修改;number_of_replicas:副本数,可修改 PUT lagou {"settings…

Discuz户外旅游|旅行游记模板/Discuz!旅行社、旅游行业门户网站模板

价值328的discuz户外旅游|旅行游记模板,本模板需要配套【仁天际-PC模板管理】插件使用。 模板说明 1、模板页面宽度1200px,简洁大气,较适合户外旅行、骑行、游记、摩旅、旅游、活动等类型的论坛、频道网站; 2、所优化的页面有&…

优雅而高效的JavaScript——Proxy 和 Reflect

🤔博主:小猫娃来啦 文章核心:优雅而高效的JavaScript——Proxy 和 Reflect 文章目录 Proxy 和 Reflect是什么Proxy创建 Proxy 对象拦截器方法拦截器示例:属性拦截拦截器示例:方法拦截 ReflectReflect 的静态方法Reflec…

ESP32单片机环境搭建(VScode + PlatformIO IDE)

一、环境搭建(VScode PlatformIO IDE) 1、官网下载VScode; 2、安装最新的插件(C/C、PlatformIO IDE、python、Chinese); 3、在PlatformIO IDE中新建工程:Platforms——Projects——Create New Project——…

P2251 质量检测

题目&#xff1a; P2251 质量检测 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 代码&#xff1a; #include<iostream> #include<cstdio> #include<deque> #include<vector> typedef long long ll; const ll N 1e7; using namespace std;int main…

SPI 接口 CAN协议控制器 MCP2515/DP2515国产替代芯片DPC15

can控制器是CAN局域网控制器的简称&#xff0c;为解决现代汽车中众多测量控制部件之间的数据交换而开发的一种串行数据通信总线。 CAN 可提供高达1Mbit/s的数据传输速率&#xff0c;这使实时控制变得非常容易。另外&#xff0c;硬件的错误检定特性也增强了CAN的抗电磁干扰能力…

[MQ]Win平台RocketMQ安装启动

1、下载 官网下载地址&#xff1a;https://rocketmq.apache.org/zh/download 2、解压ZIP包 解压rocketmq-all-x.x.x-bin-release.zip到目录。 比如我解压到了E:\Env\MQ_rocket\rocketmq-all-5.1.4-bin-release 3、配置环境变量 ROCKETMQ_HOME 4、RocketMQ JVM内存配置 这个需要…

架构案例2017(五十二)

第5题 阅读以下关于Web系统架构设计的叙述&#xff0c;在答题纸上回答问题1至问题3.【说明】某电子商务企业因发展良好&#xff0c;客户量逐步增大&#xff0c;企业业务不断扩充&#xff0c;导致其原有的B2C商品交易平台己不能满足现有业务需求。因此&#xff0c;该企业委托某…

上网冲浪发现多处XSS

突然的发现 今天上网冲浪&#xff0c;突然想起来有一种神器&#xff0c;叫废话生成器&#xff0c;之前是在哪里下了个软件玩了一下&#xff0c;然后就给删除了&#xff0c;因为我觉得这个软件不过就是调用了一个web接口实现的&#xff0c;一个网页能解决的事还要我下一个软件。…

系列八、Redis的事务

一、是什么 可以一次执行多个命令&#xff0c;本质是一组命令的集合。一个事务中的所有命令都会序列化&#xff0c;按顺序地串行化执行而不会被其他命令插入&#xff0c;不允许加塞。 二、能干嘛 一个队列中&#xff0c;一次性、顺序性、排他性的执行一些列命令。 三、怎么玩…

【ARM Coresight Debug 系列 16 -- Linux 断点 BRK 中断使用详细介绍】

文章目录 1.1 ARM BRK 指令1.2 BRK 立即数宏定义介绍1.3 断点异常处理流程1.3.1 el1_sync_handler1.3.2 el1_dbg 跟踪 1.4 debug 异常处理函数注册1.4.1 brk 处理函数的注册 1.1 ARM BRK 指令 ARMv8 架构的 BRK 指令是用于生成一个软件断点的。当处理器执行到 BRK 指令时&…

倒计时4天|超硬核!第四届CID大会完整议程揭晓

CID大会官网&#xff1a; http://chinacid.org/ 原文链接&#xff1a;报名继续 | 超硬核&#xff01;第四届CID大会完整议程揭晓

TDengine 资深研发整理:基于 SpringBoot 多语言实现 API 返回消息国际化

作为一款在 Java 开发社区中广受欢迎的技术框架&#xff0c;SpringBoot 在开发者和企业的具体实践中应用广泛。具体来说&#xff0c;它是一个用于构建基于 Java 的 Web 应用程序和微服务的框架&#xff0c;通过简化开发流程、提供约定大于配置的原则以及集成大量常用库和组件&a…

使用Pytorch实现频谱归一化生成对抗网络(SN-GAN)

自从扩散模型发布以来&#xff0c;GAN的关注度和论文是越来越少了&#xff0c;但是它们里面的一些思路还是值得我们了解和学习。所以本文我们来使用Pytorch 来实现SN-GAN 谱归一化生成对抗网络是一种生成对抗网络&#xff0c;它使用谱归一化技术来稳定鉴别器的训练。谱归一化是…

YOLO目标检测——跌倒摔倒数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;公共安全监控、智能家居、工业安全等活动区域无监管情况下的人员摔倒事故数据集说明&#xff1a;YOLO目标检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富。使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含…

【Eclipse】取消按空格自动补全,以及出现没有src的解决办法

【Eclipse】设置自动提示 教程 根据上方链接&#xff0c;我们已经知道如何设置Eclipse的自动补全功能了&#xff0c;但是有时候敲变量名的时候按空格&#xff0c;本意是操作习惯&#xff0c;不需要自动补全&#xff0c;但是它却给我们自动补全了&#xff0c;这就造成了困扰&…

诚迈科技董事长王继平出席中国(太原)人工智能大会并发表演讲

10月14日—15日&#xff0c;2023中国&#xff08;太原&#xff09;人工智能大会在山西省太原市举办。诚迈科技在大会上全面展示了其在人工智能领域的一系列创新技术与解决方案&#xff0c;诚迈科技董事长、统信软件董事长王继平受邀出席产业数字化转型论坛并发表主题演讲&#…

面试58同城!面试官问我redis 雪崩、穿透、击穿怎么处理?

一、Redis 缓存雪崩 1.1 缓存雪崩的概念 缓存雪崩指的是在某个时间点&#xff0c;缓存中的大量数据同时失效&#xff0c;导致大量请求直接落到数据库上&#xff0c;造成数据库压力过大&#xff0c;甚至引发系统崩溃。 1.2 缓存雪崩发生的原因 缓存雪崩通常是由以下原因引起…

[已解决]llegal target for variable annotation

llegal target for variable annotation 问题 变量注释的非法目标 思路 复制时编码错误&#xff0c;自己敲一遍后正常运行 #** 将垂直知识加入prompt&#xff0c;以使其准确回答 **# prompt_templates { # "recommand":"用户说&#xff1a;__INPUT__ …