super关键字的使用总结

一、super关键字的使用1. 为什么需要super?举例1:子类继承父类以后,对父类的方法进行了重写,那么在子类中,是否还可以对父类中被重写的方法进行调用?
可以!举例2:子类继承父类以后,发现子类和父类中定义了同名的属性,是否可以在子类中区分两个同名的属性?
可以!

如何调用? 使用super关键字即可。2. super的理解:父类的3. super可以调用的结构:属性、方法、构造器具体的:
3.1 super调用属性、方法子类继承父类以后,我们就可以在子类的方法或构造器中,调用父类中声明的属性或方法。(满足封装性的前提下)
如何调用呢?需要使用"super."的结构,表示调用父类的属性或方法。
一般情况下,我们可以考虑省略"super."的结构。但是,如果出现子类重写了父类的方法或子父类中出现了同名的属性时,
则必须使用"super."的声明,显式的调用父类被重写的方法或父类中声明的同名的属性。举例1:子类继承父类以后,对父类的方法进行了重写,那么在子类中,是否还可以对父类中被重写的方法进行调用? 可以!
package chapter07_oop2.src.com.atguigu05._super;/*** ClassName: Person* Description:** @Author 尚硅谷-宋红康* @Create 9:08* @Version 1.0*/
public class Person {//属性String name;//方法public void eat(){System.out.println("人吃饭");}public void sleep(){System.out.println("人睡觉");}}

package chapter07_oop2.src.com.atguigu05._super;/*** ClassName: Student* Description:** @Author 尚硅谷-宋红康* @Create 9:08* @Version 1.0*/
public class Student extends Person {String school;public void study(){System.out.println("学生学习");}public void eat(){System.out.println("学生应该多吃有营养的食物");}public void sleep(){System.out.println("学生保证每天不低于10小时的睡眠");}public  void show(){eat(); //省略了thisthis.eat();super.eat();}}

package chapter07_oop2.src.com.atguigu05._super;/*** ClassName: StudenTest* Package: chapter07_oop2.src.com.atguigu05._super* Description:** @Author 小白* @Create 2024/4/2 11:14* @Version 1.0*/
public class StudenTest {public static void main(String[] args) {Student s1 = new Student();s1.eat();s1.sleep();s1.show();}}

 

 如果子类没有重写父类中的方法   如果父类还是没有找到 就会找到Object  如果Object还是没有找到  则报错

 

 

举例2:子类继承父类以后,发现子类和父类中定义了同名的属性,是否可以在子类中区分两个同名的属性? 可以!

现在是有五个属性

 

package chapter07_oop2.src.com.atguigu05._super;/*** ClassName: Person* Description:** @Author 尚硅谷-宋红康* @Create 9:08* @Version 1.0*/
public class Person {//属性String name;private  int age;int  id = 1001; //身份证号//方法public void eat(){System.out.println("人吃饭");}public void sleep(){System.out.println("人睡觉");}public  void doSport(){System.out.println("人运动");}}

package chapter07_oop2.src.com.atguigu05._super;/*** ClassName: Student* Description:** @Author 尚硅谷-宋红康* @Create 9:08* @Version 1.0*/
public class Student extends Person {String school;int  id = 1002; //学号public void study(){System.out.println("学生学习");}public void eat(){System.out.println("学生应该多吃有营养的食物");}public void sleep(){System.out.println("学生保证每天不低于10小时的睡眠");}public  void show(){eat(); //省略了thisthis.eat();super.eat();}public  void  show1(){doSport();this.doSport();super.doSport();}public  void show2(){System.out.println(id);  //1002  找最近System.out.println(this.id);//1002 找最近System.out.println(super.id); //1001   找父类的属性}}

package chapter07_oop2.src.com.atguigu05._super;/*** ClassName: StudenTest* Package: chapter07_oop2.src.com.atguigu05._super* Description:** @Author 小白* @Create 2024/4/2 11:14* @Version 1.0*/
public class StudenTest {public static void main(String[] args) {Student s1 = new Student();s1.eat();s1.sleep();s1.show();s1.doSport();s1.show2();}}

总结:加不加super 区别在于有没有同名  如果没有同名  结果都是一样的

3.2 super调用构造器
① 子类继承父类时,不会继承父类的构造器。只能通过“super(形参列表)”的方式调用父类指定的构造器。

举例:

package chapter07_oop2.src.com.atguigu05._super;/*** ClassName: Person* Description:** @Author 尚硅谷-宋红康* @Create 9:08* @Version 1.0*/
public class Person {//属性String name;private  int age;int  id = 1001; //身份证号public Person() {System.out.println("Person()....");}public Person(String name, int age) {this.name = name;this.age = age;}public Person(String name, int age, int id) {this.name = name;this.age = age;this.id = id;}//方法public void eat(){System.out.println("人吃饭");}public void sleep(){System.out.println("人睡觉");}public  void doSport(){System.out.println("人运动");}}

package chapter07_oop2.src.com.atguigu05._super;/*** ClassName: Student* Description:** @Author 尚硅谷-宋红康* @Create 9:08* @Version 1.0*/
public class Student extends Person {String school;int  id = 1002; //学号public void study(){System.out.println("学生学习");}public void eat(){System.out.println("学生应该多吃有营养的食物");}public void sleep(){System.out.println("学生保证每天不低于10小时的睡眠");}public  void show(){eat(); //省略了thisthis.eat();super.eat();}public  void  show1(){doSport();this.doSport();super.doSport();}public  void show2(){System.out.println(id);  //1002  找最近System.out.println(this.id);//1002 找最近System.out.println(super.id); //1001   找父类的属性}//测试super调用父类的构造器public Student(){super();System.out.println("Student()...");}}

package chapter07_oop2.src.com.atguigu05._super;/*** ClassName: StudenTest* Package: chapter07_oop2.src.com.atguigu05._super* Description:** @Author 小白* @Create 2024/4/2 11:14* @Version 1.0*/
public class StudenTest {public static void main(String[] args) {Student s1 = new Student();s1.eat();s1.sleep();s1.show();s1.doSport();s1.show2();//************************System.out.println();Student s2 = new Student();}}

② 规定:“super(形参列表)”,必须声明在构造器的首行。

③ 我们前面讲过,在构造器的首行可以使用"this(形参列表)",调用本类中重载的构造器,结合②,结论:在构造器的首行,"this(形参列表)" 和 "super(形参列表)"只能二选一。

④ 如果在子类构造器的首行既没有显示调用"this(形参列表)",也没有显式调用"super(形参列表)",则子类此构造器默认调用"super()",即调用父类中空参的构造器。

 

⑤ 由③和④得到结论:子类的任何一个构造器中,要么会调用本类中重载的构造器,要么会调用父类的构造器。只能是这两种情况之一。
⑥ 由⑤得到:一个类中声明有n个构造器,最多有n-1个构造器中使用了"this(形参列表)",则剩下的那个一定使用"super(形参列表)"。

--> 我们在通过子类的构造器创建对象时,一定在调用子类构造器的过程中,直接或间接的调用到父类的构造器。
也正因为调用过父类的构造器,我们才会将父类中声明的属性或方法加载到内存中,供子类对象使用。

 

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

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

相关文章

一个页面实现两个滚动条【前端】

一个页面实现两个滚动条【前端】 前言版权推荐一个页面实现两个滚动条最后 前言 2024-4-2 12:54:46 以下内容源自《【前端】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是https://jsss-1.blog.csdn.net …

【zlm】音视频流与音频流合并的设计

目录 设想一 设想二 方案三 关键技术 测试语句 测试脚本 参考文档 设想一 //开始录制_option.mp4_save_path custom_path;_option.mp4_max_second max_second;vector<Track::Ptr> mytracks getTracks();auto src MediaSource::find( DEFAULT_VHOST, "1&quo…

练习14 Web [极客大挑战 2019]Upload

phtml格式绕过&#xff0c;burp修改content-type绕过&#xff0c;常见的文件上传存放目录名 题目就叫upload&#xff0c;打开靶机 直接上传一个图片格式的一句话木马&#xff0c;返回如下&#xff1a; 提交练习5和9中的两种可以执行图片格式php代码的文件&#xff0c;修改con…

生成式人工智能对信息安全的挑战及解决方案

概念 生成式人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;基于训练数据以及用户提示词创建新内容的能力&#xff0c;在教育、娱乐、巡检、医疗保健和科学研究等多个领域提供变革潜力&#xff0c;激发起前所未有的关注度和创造力浪潮&#xff0c;引发…

25.死锁

一个线程如果需要同时获取多把锁&#xff0c;就容易产生死锁。 t1线程获得A对象锁&#xff0c;接下来想获取B对象的锁。 t2线程获得B对象锁&#xff0c;接下来想获取A对象的锁。 /*** 死锁demo* param args*/public static void main(String[] args) {Object a new Object(…

如何使用【知乎引流软件工具】进行有效引流

知乎&#xff0c;这个内容平台&#xff0c;无疑是品牌和创作者们的乐园。 品牌能在这里找到目标关键词&#xff0c;而创作者们的内容则可以吸引流量&#xff0c;助力各种项目。 别被那些所谓的爆粉秘籍迷惑了&#xff0c;真正的成功往往来自于扎实的内容和策略&#xff0c;而非…

云原生(七)、Kubernetes初学 + 裸机搭建k8s集群

Kubernetes简介 Kubernetes&#xff08;通常简称为K8s&#xff09;是一个开源的容器编排平台&#xff0c;最初由Google设计和开发&#xff0c;现在由Cloud Native Computing Foundation&#xff08;CNCF&#xff09;维护。它旨在简化容器化应用程序的部署、扩展和管理。 Kube…

IPC 进程间通信

IPC InterProcess Communication The concept of IPC Each process has a differnt user addess space,and local variables 各自看不见,so 进程间通信 need kernel(内核), so a buffer is opened in the kernel,process 1 copies data from user space to this buffer,and …

Linux:运营商在网络中扮演的角色

文章目录 ip目前的问题ip目前的几种解决方案私有ipVS公有ip运营商再谈ip划分运营商的角度看ip 本篇总结的是运营商在网络中扮演的角色 ip目前的问题 在目前看来&#xff0c;ip最大的问题是ip号不够用了&#xff0c;那这个问题如何解决呢&#xff1f; 在之前的内容中有子网掩…

朗之万方程,机器学习与液体中的粒子运动

目录 一、说明二、朗之万方程的诞生2.1 牛顿力学2.2 流体中的随机运动 三、小质量物体布朗运动方程四、布朗运动的Python代码五、稳定性讨论5.1 波尔兹曼分布5.2 梯度下降算法 六、随机梯度下降&#xff08;SGD&#xff09;和小批量梯度下降七、机器学习与物理&#xff0c;作为…

加密软件VMProtect教程:使用脚本-功能

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic&#xff08;本机&#xff09;、Virtual Pascal和XCode编译器。 同时&#xff0c;VMProtect有一个内置的反汇编程序&#xff0c;可以与Windows和Mac OS X可执行文件一起…

最大连续1的个数||

又用到滑动窗口&#xff0c;关键在于要维持窗口内0的数量在k内 #include<stdio.h> #include<string.h>int Max(int a,int b){return (a>b)?a:b; }int findMaxConsecutiveOnes(int* nums,int numsSize,int k){int left 0;int right 0;int flag 0;//记录包含…

系统设计理念:满足设计要求

在今天的文章中,我们将层层剥离并深入探讨系统设计要求的本质。 让我们了解系统设计的支柱以及如何创建强大且有弹性的应用程序。 什么是好的设计? 在我们深入讨论技术细节之前,让我们先讨论一下什么是好的设计。 当我们谈论系统架构中的良好设计时,我们关注几个关键原则:…

初始C语言最后一章《编译、链接与预处理详解》

前言 感谢老铁们的陪伴和支持&#xff0c;初始C语言专栏在本章内容也是要结束了&#xff0c;这创作一路下来也是很不容易&#xff0c;如果大家对 Java 后端开发感兴趣&#xff0c;欢迎各位老铁来我的Java专栏&#xff01;当然了&#xff0c;我也会更新几章C语言实现简单的数据结…

C++中的面向对象到底是什么

C中的面向对象到底是什么 对象嘛&#xff0c;就和大家都有的对象一样&#xff0c;两只眼睛、一个嘴巴、两条腿…… 对不起跑题了&#xff0c;C的面向对象中的对象可不是显示中的对象哦&#xff0c;但是有一些相似之处&#xff0c;有对象的同学可以参考着去学习C面向对象的概念…

HackTheBox-Machines--Builder

文章目录 1 端口扫描2 测试思路3 漏洞测试 Builder测试过程 1 端口扫描 nmap -sC -sV 10.129.230.2202 测试思路 系统开启了22和8080端口&#xff0c;22端口无账号密码&#xff0c;测试方向主要从8080的jenkins服务开始测试。 在测试开源系统时&#xff0c;可以下载源代码或本地…

3、jvm基础知识(三)

如何判断堆上的对象没有被引用&#xff1f; 常见的有两种判断方法&#xff1a;引用计数法和可达性分析法。 引用计数法会为每个对象维护一个引用计数器&#xff0c;当对象被引用时加1&#xff0c;取消引用时减1。 引用计数法的优点是实现简单&#xff0c;缺点有两点&#xff1…

电机选型与直线模组(简化版)

2-1电机分类和普通电机选型 1、电机及其原理的基本认知&#xff1a; 电动机我们平时简称电机&#xff0c;大部分情况下指的都是通电后&#xff0c;输出轴会旋转运动的设备。即将电能转换为机械能&#xff0c;供我们使用以驱动机构运行。电机简单的讲&#xff0c;其实就是一个…

梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码

源码简介 最新梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码下载 梨花带雨播放器基于thinkphp6开发的XPlayerHTML5网页播放器前台控制面板,支持多音乐平台音乐解析。二开内容&#xff1a;修复播放器接口问题&#xff0c;把接口本地化&#xff0c;但是集成外链播放器…

【Qt】常用控件(输入类)

目录 一、Line Edit二、Text Edit三、ComBo四、DateTimeEdit五、Slider 一、Line Edit QLineEdit 用来表示单行输入框&#xff0c;可以输入一段文本&#xff0c;但是不能换行。 属性说明test输入框中的文本inputMask输入内容格式约束maxLength最大长度frame是否添加边框echoM…