Java学习17-- super类

news2024/9/23 7:26:55

重点:super类 & 方法重写

super类

super指的是本级的上一级,即father class父类

很好理解,比如Person class>Student class
当前在Student class执行,那么就写this.xxx
需要在Student程序里面调用Person,那就写super.xxx

比如下面的例子:

建立一个叫做kids的class它的上级是human class,从主程序testjan05来调用kids class里面的method my_prt它可以打印输出kids class里的变量name以及this.name和super.name。注意将kids内部的name设为private,观察输出的结果


public class testjan05{
public static void main(String args[]) {

kids x = new kids();

x.my_prt("emma");}
}


public class kids extends human{

    private String name = "kids_name";

    public kids() {
        super();//这句如果用户不写,也可以。这是一句隐藏指令,代表去调用父类的constructor,一定在子类的constructor最开始出现。
		//这一句就是表示在运行kids constructor的下面内容之前,需要先去运行human constructor的内容。并且human constructor必须是无参的。
		//如果human constructor有参,那么它会覆盖同名的human constructor,继而引申到kids constructor也会报错,参见下一例。
        System.out.println("这里是kids.class内部");
    }


    public void my_prt(String name) {
        System.out.println(name);//这里应该是my_prt从主程序来的输入信号emma
        System.out.println(this.name);//这里因该是本级的kids_name
        System.out.println(super.name);//human_name

    }

}


public class human {

    public String name = "human_name";
    public human() {
        System.out.println("这里是human.class内部");
    }


}

运行结果

这里是human.class内部
这里是kids.class内部
emma
kids_name
human_name

刚才举例中,介绍了当子类constructor运行时,必然会首先默认跑一遍父类的constructor,那句代码通常是隐藏在子类constructor第一行 写做super();
问题思考:
如果父类constructor其实被用户更改了,变成了一个有参的costructor,会发生什么。
tips:根据之前的知识,一旦出现有参的constructor,它会覆盖同名的无参constructor



public class testjan05{
public static void main(String args[]) {

kids x = new kids();}
}


public class kids extends human{

    private String name = "kids_name";


    public kids() {
        super();
		//这个super是去父类human class里面调用human constructor
		//系统默认这个父类的constructor肯定是无参的,现在人为加了参数a
		//这里一定会报错,错误见下图
        System.out.println("inside kids constructor");

    }
}



public class human {

    public String name = "human_name";

    public human(String a) {
        System.out.println("inside human constructor");
		//注意这里用户自定义的human constructor被用户增加了一个参数String a
		//原本系统在后台默默建立的无参human constructor会被用户这个有参的覆盖掉
    }
}

错误图示:
在这里插入图片描述

错误提示
Expected 1 arguments but found 0

解决方法,给super()添加一个符合父类human constructor要求的参数即可

public class kids extends human{

    private String name = "kids_name";


    public kids() {
        super("sth_random");
		//父类human constructor需要String作为输入,
		//这里随意给了一个String立刻就不报错了
        System.out.println("inside kids constructor");
    }

}


super注意点:
1.super表示调用父类的构造方法,肯定在构造方法的第一个出现,系统会偷偷加上
2.super必须只能在子类的方法或者构造方法中
3.super 和 this不能同时调用构造方法,同时写出来,肯定有一个报错

super VS this:

代表的对象不同
this:本身调用的这个对象
super:代表父类对象的应用

前提
this:没有继承人也可以用
super:只能在继承条件下才可以用

构造方法的区别
this(); 本类的构造
super(); 父类的构造

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

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

相关文章

L3HCTF 2024

Check in 输入一个1就获得flag

打印斐波那契数列

定义: 斐波那契数列是指这样一个数列:1,1,2,3,5,8,13,21,34,55,89……这个数列从第3项开始 ,每一项都等于前两项之和。 …

【复现】九思OA系统 SQL注入漏洞_43

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 九思软件自主研发的iThink协同OA办公自动化系统是面向中高端企业、政府机关和事业单位、等大型企业的协同办公软件,面…

QLabel重绘实现圆角矩形图片/文本和图片同时显示

QLabel一般用于显示一段文字,这段文字可以被鼠标选中/复制,也可是设置自动换行等,还可以用于显示图片。 但是使用QLabel显示图片时,qss样式设置的圆角radius属性是不生效的。 QLabel显示纯文本时,设置了背景颜色后&a…

Vue3.0(五):Vue-Router 4.x详解

Vue-Router详解 vue-router教程 认识前端路由 路由实际上是网络工程中的一个术语 在架构一个网络的时候,常用到两个很重要的设备—路由器和交换机路由器实际上就是分配ip地址,并且维护着ip地址与电脑mac地址的映射关系通过映射关系,路由器…

【Godot4.2】文件系统自定义控件 - GroupButtons

GroupButtons 概述 读者朋友们好,我是巽星石,这是我的Godot4.2文件系统自定义控件系列文章。 在很多程序或插件设计中,都会用到一堆按钮的形式,好处是比较直观,用啥点啥,本质上相当于一个简化的二级树形…

【Git版本控制 01】基本操作

目录 一、初始配置 二、添加文件 三、查看日志 四、修改文件 五、版本回退 六、撤销修改 七、删除文件 一、初始配置 Git版本控制器:记录每次的修改以及版本迭代的一个管理系统。 # 初始化本地仓库:git init(base) [rootlocalhost gitcode]# gi…

【通讯录案例-偏好设置 Objective-C语言】

一、刚才,我们plist存储,讲完了,这个plist,我直接,右键,打开 打开 不用xcode,我就用文本文档打开,打开方式:其他 选择:文本编辑 打开 好,这个里边儿啊,就是我们刚才存的一个Key:Value 它本质上,是一个xml 这是一种文件的格式, 等你们讲到网络的时候,实际上,…

Android 环境搭建

1、桥接工具安装 网站地址:AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 使用安装包: adb 查看当前链接成功的设备:adb devices 使用adb shell指令来进入到手机的后台:

Ondo宣布将其原生稳定币USDY带入Sui生态

重要提示:USDY是由短期美国国债支持的token化票据,持有者享受稳定币的实用性同时获得收益。USDY不得在美国或向美国人出售或以其他方式提供。USDY也未根据1933年美国证券法注册。 不到一年的时间,Sui已经成为全链TVL排名前十的区块链&#xf…

MySQL- 运维-分库分表-Mycat

一、Mycat概述 1、安装 2、概念介绍 二、Mycat入门 启动服务 三、Mycat配置 1、schema.xml 2、rule.xml 3、server.xml 四、Mycat分片 1、垂直分库 2、水平分表 五、Mycat管理及监控 1、Mycat原理 2、Mycat管理工具 (1)、命令行 (2&#…

SpringBoot + Tess4J 实现本地与远程图片的文字识别

1 前言 1.1 概要 在本文中,我们将探讨如何在Spring Boot应用程序里集成Tess4J来实现OCR(光学字符识别),以识别出本地和远程图片中的文字。 我们将从添加依赖说起,然后创建服务类以实现OCR,最后展示如何处…

基于微信小程序的新生报到系统的研究与实现,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

如何给闲置电脑安装黑群晖

准备 diskgenius ,黑群晖引导文件(有些需要扩展驱动包),如果给U盘安装需要balenaEtcher或者rufus(U盘安装还需要ChipGenus),如果给硬盘安装需要有pe推荐firePE或U启通 我以U盘为例 首先去找这…

【RPA】浅谈RPA技术及其应用

摘要:随着信息技术的飞速发展,企业对于自动化、智能化的需求日益增强。RPA(Robotic Process Automation,机器人流程自动化)技术应运而生,为企业提供了全新的自动化解决方案。本文首先介绍了RPA技术的基本概…

Stability AI一种新型随心所欲生成不同音调、口音、语气的文本到语音(TTS)音频模型

该模型无需提前录制人声样本作为参考,仅凭文字描述就能生成所需的声音特征。用户只需描述他们想要的声音特点,例如“一个语速较快、带有英国口音的女声”,模型即可相应地生成符合要求的语音。它不仅能模仿已有的声音,还能根据用户…

ESP8266 tcpsocket透传模式流程介绍

一、整体流程介绍 二、固件介绍 固件视频演示地址: ESP8266-配网&热点设置说明_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1hq4y127dN/?spm_id_from333.999.0.0

第三百一十五回

文章目录 1. 概念介绍2. 基本用法3. 补充用法4. 内容总结 我们在上一章回中介绍了"再谈ListView中的分隔线",本章回中将介绍showMenu的用法.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在第一百六十三回中介绍了showMenu相关的内容…

Log4j2漏洞(二)3种方式复现反弹shell

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 1、前言 明天就是除夕了,提前祝大家&#x…

Apollo

一. 部署说明 apollo配置中心由三个组件组成: ConfigService 配置中心,客户端从这个服务拉配置,同时内置了Eureka、MetaService。每个环境要有一个 AdminService 配置管理服务,管理数据库配置,Portal调这个服务修改、…