Java学习17-- super类

重点: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从主程序来的输入信号emmaSystem.out.println(this.name);//这里因该是本级的kids_nameSystem.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.mzph.cn/news/674689.shtml

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

相关文章

HarmonyOS应用/服务发布:打造多设备生态的关键一步

目前 前言HarmonyOS 应用/服务发布的重要性使用HarmonyOS 构建跨设备的应用生态前期准备工作简述发布流程生成签名文件配置签名信息编译构建.app文件上架.app文件到AGC结束语 前言 随着智能设备的快速普及和多样化,以及编程语言的迅猛发展,构建一个无缝…

大数据 - Spark系列《四》- Spark分布式运行原理

Spark系列文章: 大数据 - Spark系列《一》- 从Hadoop到Spark:大数据计算引擎的演进-CSDN博客 大数据 - Spark系列《二》- 关于Spark在Idea中的一些常用配置-CSDN博客 大数据 - Spark系列《三》- 加载各种数据源创建RDD-CSDN博客 目录 🍠…

sqli-labs-master靶场训练笔记(38-53|boss战)

2024.2.4 level-38 (堆叠注入) 这题乍一看感觉又是来卖萌的,这不是和level-1一模一样吗 然后仔细看了一下源代码,根据 mysqli_multi_query 猜测这题的本意应该是堆叠注入 mysqli_multi_query() 是 PHP 中用于执行多个 SQL 查…

品牌如何营造生活感氛围?媒介盒子分享

「生活感」简而言之是指人们对生活的感受和意义,它往往没有充斥在各种重要的场合和事件中,而是更隐藏在细碎平凡的生活场景中。在营销越来越同质化的当下,品牌应该如何打破常规模式,洞察消费情绪,找到更能打动消费者心…

2023:AI疯狂进化年

嘿,大家好!让我们一起来回顾一下这疯狂的 2023 年吧!记得那个二月初吗?ChatGPT 上线了,然后呢?短短两个月,用户数量就像火箭一样突破了 1 亿!这速度,简直比超级赛亚人还快…

前端JavaScript篇之对执行上下文的理解

目录 对执行上下文的理解创建执行上下文 对执行上下文的理解 当我们在执行JavaScript代码时,JavaScript引擎会创建并维护一个执行上下文栈来管理执行上下文。执行上下文有三种类型:全局执行上下文、函数执行上下文和eval函数执行上下文。 在写代码的时…

(6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理

目录 一、为什么要使用Adaboost建模? 二、泰坦尼克号分析(工作环境) (插曲)Python可以引入任何图形及图形可视化工具 三、数据分析 四、模型建立 1、RandomForestRegressor预测年龄 2、LogisticRegression建模 引入GridSearchCV 引入RandomizedSearchCV 3、Deci…

第三百一十回

我们在上一章回中介绍了"再谈ListView中的分隔线",本章回中将介绍showMenu的用法.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在第一百六十三回中介绍了showMenu相关的内容,它主要用来显示移动PopupMenu在页面中的位置…

C语言第二十一弹---指针(五)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 转移表 1、转移表 总结 1、转移表 函数指针数组的用途:转移表 举例:计算器的⼀般实现: 假设我们需要做一个能够进行加减…

CoreSight学习笔记

文章目录 1 Components1.1 ROM Table 2 使用场景2.1 Debug Monitor中断2.1.1 参考资料 2.2 Programming the cross halt2.2.1 编程实现2.2.2 参考资料 2.3 CTI中断2.3.1 编程实现2.3.1.1 准备工作2.3.1.2 触发中断2.3.1.3 中断响应 2.3.2 参考资料 1 Components 1.1 ROM Table…

rust语言tokio库底层原理解析

目录 1 rust版本及tokio版本说明1 tokio简介2 tokio::main2.1 tokio::main使用多线程模式2.2 tokio::main使用单线程模式 3 builder.build()函数3.1 build_threaded_runtime()函数新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图…

国产三维剖面仪—MPAS-100相控参量阵浅地层剖面仪

最近声学所东海站邹博士发来了他们最新的浅地层剖面仪—MPAS-100相控参量阵浅地层剖面仪的资料,市场型号GeoInsight,委托Ocean Physics Technology公司销售,地大李师兄的公司负责技术支持。 MPAS-100相控参量阵浅地层剖面仪就是俗称的三维浅…

git安装配置

1、下载安装 下载地址 2、配置git用户 git config --global user.name "yw" git config --global user.email "88888qq.com" 3、git init 初始化 4、生成ssh密钥 mkdir .ssh //创建文件夹cd .ssh //进入新建文件夹 ssh-keygen -t rsa // 输入密钥文…

Uniapp真机调试:手机端访问电脑端的后端接口解决

Uniapp真机调试:手机端访问电脑端的后端接口解决 1、前置操作 HBuilderX -> 运行 -> 运行到手机或模拟器 -> 运行到Android App基座 少了什么根据提示点击下载即可 使用数据线连接手机和电脑 手机端:打开开发者模式 -> USB调试打开手机端&…

使用 WMI 查询安全软件信息

在这篇文章中,我们将详细介绍如何使用 Windows Management Instrumentation (WMI) API 来查询当前计算机上安装的安全软件的基本信息。我们将分析代码的各个部分,并解释每个步骤所涉及的技术和原理。 一、什么是 WMI? WMI 是 Windows Manag…

Vue安装与配置

写入借鉴网址:好细的Vue安装与配置_vue配置-CSDN博客 下载Vue安装地址: Node.js — Download 查看是否安装成功: node -v npm -v 配置全局模式及缓存 结果通过: C:\Windows\system32>npm install vue -g added 20 packages …

大学生活的“三角平衡”与“合法”偷懒艺术

在那个被称为大学的神奇乐园里,我终于找到了自我,或者说,我找到了一种平衡。这种平衡被我称为“三角平衡”,它是由懒觉、兴趣爱好和学习这三者构成的。在这个平衡中,我像一名杂技演员一样,稳稳地站在三个顶…

jsp商场会员卡管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 商场会员卡管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.…

python中sort()函数的详细使用方法

目录 使用reverse指定排序顺序 使用key指定排序规则 使用匿名函数制定规则 定义比较函数制定规则 制定多规则 多复杂规则排序 sort()是python非常好用的排序函数,可以对一个列表进行排序,这个排序只是会修改原列表,不会创建新的列表 使…

2024年 复习 HTML5+CSS3+移动web 笔记 之CSS遍 第6天

6.1 定位-相对和绝对和固定 6.2 相对和绝对和固定 6.3 堆叠顺序z-index 6.4 定位总结 6.5 CSS精灵 基本使用 6.6 案例 CSS精灵 京东服务 6.7 字体图标-下载和使用 6.8 字体图标-上传 6.9 垂直对齐方式vertical-align 6.10 过渡属性 6.11 修饰属性-透明度与光标类型 6.12 综合案…