关于java中的Super详解

关于java中的Super详解

我们在上一篇文章中了解到了面向对象三大基本特征,继承,我们本篇文章中来了解一下Super😀。

一、Super和this调用属性

  • this:当前类中使用。
  • super:父类使用。

我们直接用代码来说明一下。

1、首先我们新建一个人类,一个学生类,然后让学生类去继承人类。

//人类
public class Person
{}
//学生类
public class Student extends Person
{}

2、我们在父类(人类)中,定义一个属性,用受到保护修饰符protected去声明一个名字name,然后在学生类(子类)里面声明一个私有属性name,并且在学生类(子类)定义一个方法去输出名字。

//人类
public class Person
{protected String name="xiaoming";
}
//学生类
public class Student extends Person
{private String name="ming";public void test(String name){System.out.println(name);//传参的nameSystem.out.println(this.name);//当前类的nameSystem.out.println(super.name);//父类的name}
}

3、我们用main方法调用一下,创建学生类的对象。

public class Application {public static void main(String[] args) {Student student = new Student();student.test("羊");}
}

我们执行以下输出结果,可以发现,输出的东西也是我们定义属性赋值的内容。

羊
ming
xiaoming进程结束.......

二、Super和this调用方法

1、我们在学生类和人类中,都定义一个输出的方法。

//人类
public class Person {protected String name="xiaoming";public void print(){System.out.println("Person");}
}
//学生类
public class Student extends Person
{private String name="ming";public void print(){System.out.println("Student");}public void test(String name){System.out.println(name);System.out.println(this.name);System.out.println(super.name);}public void test1(){print();//当前类中的方法,但是不建议这样去写,因为会分不清this.print();//当前类中的方法super.print();//父类中的方法}
}

3、我们用main方法调用一下。

public class Application {public static void main(String[] args) {Student student = new Student();student.test1();}
}

4、我们执行以下输出结果。

Student
Student
Person进程结束.....

5、如果把父类(人类)中的方法换成私有的方法,就会无法被调用,因为私有的东西无法被继承

三、隐藏的代码

我们在学构造器的时候,知道无参构造是被隐藏的,但是我们这里给它写出来,然后输出一句话,学生类和人类都写出来。

  • ALT+INS(快捷键)
//人类
public class Person {public Person() {System.out.println("Person无参执行");}
}
//学生类
public class Student extends Person
{public Student() {//隐藏代码:调用了父类的无参super();//调用父类构造器必须放在子类构造器的第一行System.out.println("Student无参执行");}
}

我们在main方法中只创建对象然后直接执行。

public class Application {public static void main(String[] args) {Student student = new Student();}
}
Person无参执行
Student无参执行进程结束......
  • 所以,隐藏代码调用了父类的无参(super();)
  • 调用父类构造器必须放在子类构造器的第一行。
  • 不写也可以,这里只是展示一下隐藏代码的样子😊。
  • 在父类中写了有参构造,必须要写出无参构造,如果不在父类写出无参,默认隐藏调用是无参,会导致程序报错。

四、super和this注意点

  • super

1、super调用父类的构造方法,必须在构造方法的第一个

2、super 必须只能出现在子类的方法或者构造方法中!

3、super和 this 不能同时调用构造方法!

  • this

1、代表的对象不同:

this:本身调用者这个对象

super: 代表父类对象的应用前提

2、没有继承也可以使用this

3、super:只能在继承条件才可以使用构造方法。

4、this();本类的构造

5、super();父类的构造

五、idea向右拆分

在这里插入图片描述

我们可以点击页面,右键,向右拆分或者向左拆分,来把代码分页,这样比较方便大家观看😊

  • ALT+1 关闭项目结构

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

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

相关文章

如何使用JS逆向爬取网站数据

引言: JS逆向是指利用编程技术对网站上的JavaScript代码进行逆向分析,从而实现对网站数据的抓取和分析。这种技术在网络数据采集和分析中具有重要的应用价值,能够帮助程序员获取网站上的有用信息,并进行进一步的处理和分析。 基…

windows vscode jsoncpp cmake c++ 构建项目

jsoncpp的编译和使用推荐文章:jsoncpp的编译和使用 | 爱编程的大丙 (subingwen.cn)https://www.subingwen.cn/cpp/jsoncpp/从这个链接下载jsoncpp-master:https://github.com/open-source-parsers/jsoncpp 可以把这个文件夹名字改成jsoncpp,…

探索设计模式的魅力:“感受单例模式的力量与神秘” - 掌握编程的王牌技巧

在软件开发的赛场上,单例模式以其独特的魅力长期占据着重要的地位。作为设计模式中的一员,它在整个软件工程的棋盘上扮演着关键性角色。本文将带你深入探索单例模式的神秘面纱,从历史渊源到现代应用,从基础实现到高级技巧&#xf…

未来的NAS:连接您的数字生活

未来的NAS:连接您的数字生活 引言 网络附加存储(Network Attached Storage,简称NAS)是一种通过网络连接的存储设备,用于集中存储和共享数据。传统的NAS设备通常包含一个或多个硬盘驱动器,可以通过局域网连…

【编码魔法师系列_构建型4】原型模式(Prototype Pattern)

👉直达编码魔法师系列其他文章👈 学会设计模式,你就可以像拥有魔法一样,在开发过程中解决一些复杂的问题。设计模式是由经验丰富的开发者们(GoF)凝聚出来的最佳实践,可以提高代码的可读性、可维…

基于网络爬虫的微博热点分析,包括文本分析和主题分析

基于Python的网络爬虫的微博热点分析是一项技术上具有挑战性的任务。我们使用requests库来获取微博热点数据,并使用pandas对数据进行处理和分析。为了更好地理解微博热点话题,我们采用LDA主题分析方法,结合jieba分词工具将文本分割成有意义的…

蓝桥杯备赛 | 洛谷做题打卡day5

蓝桥杯备赛 | 洛谷做题打卡day5 图论起航,一起来看看深(广)度优先吧 ~ 文章目录 蓝桥杯备赛 | 洛谷做题打卡day5图论起航,一起来看看深(广)度优先吧 ~【深基18.例3】查找文献题目描述 输入格式输出格式样例…

设计模式⑦ :简单化

文章目录 一、前言二、Facade 模式1. 介绍2. 应用3. 总结 三、Mediator 模式1. 介绍2. 应用3. 总结 一、前言 有时候不想动脑子,就懒得看源码又不像浪费时间所以会看看书,但是又记不住,所以决定开始写"抄书"系列。本系列大部分内容…

.NetCore Flurl.Http 4.0.0 以上管理客户端

参考原文地址:Managing Clients - Flurl 管理客户端 Flurl.Http 构建在堆栈之上System.Net.Http。如果您熟悉HttpClient,那么您可能听说过这个建议:不要为每个请求创建一个新客户端;重复使用它们,否则将面临后…

google网站流量怎么获取?

流量是一个综合性的指标,可以说做网站就是为了相关流量,一个网站流量都没有,那其实就跟摆饰品没什么区别 而想从谷歌这个搜索引擎里获取流量,一般都分为两种方式,一种是网站seo,另一种自然就是投广告&#…

软件测试阶段简介_单元测试、集成测试、配置项测试、系统测试

文章目录 前言一、软件测试“V”模型二、单元测试三、集成测试四、配置项测试五、系统测试总结 前言 一般来说,按照软件的研制阶段划分,软件测试可分为单元测试、集成测试、配置项测试、系统测试等。本文将对上述各测试阶段进行逐一介绍。 一、软件测试…

Halcon 一维测量

文章目录 算子矩形算子弧形算子移动到新的参考点 Halcon 案例测量保险丝的宽度(边缘对测量)使用助手进行测量 halcon 案例获取芯片引脚的个数平均宽度距离,连续两个边缘的距离(measure_pos )halcon 定位测量Halcon 测量…

HBase学习六:LSM树算法

1、简介 HBase是基于LSM树架构实现的,天生适合写多读少的应用场景。 LSM树本质上和B+树一样,是一种磁盘数据的索引结构。但和B+树不同的是,LSM树的索引对写入请求更友好。因为无论是何种写入请求,LSM树都会将写入操作处理为一次顺序写,而HDFS擅长的正是顺序写(且HDFS不…

【前后端的那些事】15min快速实现图片上传,预览功能(ElementPlus+Springboot)

文章目录 Element Plus SpringBoot实现图片上传,预览,删除效果展示 1. 后端代码1.1 controller1.2 service 2. 前端代码2.1 路由创建2.2 api接口2.2 文件创建 3. 前端上传组件封装 前言:最近写项目,发现了一些很有意思的功能&…

项目架构之Zabbix部署

1 项目架构 1.1 项目架构的组成 业务架构:客户端 → 防火墙 → 负载均衡(四层、七层) → web缓存/应用 → 业务逻辑(动态应用) → 数据缓存 → 数据持久层 运维架构:运维客户端 → 跳板机/堡垒机&#x…

ROS学习笔记5——话题通信自定义msg

在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty.... 但是,这些数据一般只包含一个 data 字段,结构的单一…

[python]裁剪文件夹中所有pdf文档并按名称保存到指定的文件夹

最近在写论文的实验部分,由于latex需要pdf格式的文档,审稿专家需要对pdf图片进行裁剪放大,以保证图片质量。 原图: 裁剪后的图像: 代码粘贴如下。将input_folder和output_folder替换即可。(x1, y1), (x2…

蓝桥杯备赛 day 2 —— 二分算法(C/C++,零基础,配图)

目录 🌈前言: 📁 二分的概念 📁 整数二分 📁 二分的模板 📁 习题 📁 总结 🌈前言: 这篇文章主要是准备蓝桥杯竞赛同学所写,为你更好准备蓝桥杯比赛涉及…

贪心算法 ——硬币兑换、区间调度、

硬币兑换: from book:挑战程序设计竞赛 思路:优先使用大面额兑换即可 package mainimport "fmt"func main() {results : []int{}//记录每一种数额的张数A : 620B : A//备份cnts : 0 //记录至少需要多少张nums : []int{1, 5, 10, 5…

Zookeeper简介

系列文章目录 Zookeeper安装教程 目录 一、Zookeeper简介 二、Zookeeper的数据结构 三、CPA理论 四、BASE 理论 五、ZooKeeper的特性 前言 这是我的学习笔记,以便后面翻阅。 一、Zookeeper简介 ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务&a…