Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >super和this关键字的具体应用

super和this关键字的具体应用

作者头像
C_H
发布于 2022-11-15 06:56:19
发布于 2022-11-15 06:56:19
31800
代码可运行
举报
文章被收录于专栏:笔记c笔记c
运行总次数:0
代码可运行

super和this关键字的具体应用

目录

super和this关键字的具体应用

下面通过四组Child类和Test类代码,来体现super和this关键字的具体应用

一、子类默认调用父类无参构造方法

二、子类无参构造方法中默认调用父类无参构造方法

三、子类有参构造方法中默认调用父类无参构造方法

四、子类通过this()调用自己的无参构造函数


一共有三个类

  • Person(父类)
  • Child(子类)
  • Test(实例化)

Person类(代码不变)如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Person {
	private String name;
	
	public Person(){
		System.out.println("one person");
	}
	public Person(String name){
		this.name=name;
		System.out.println("one person,设置了人名");
	}
	public int Person( int i){
		return i;
	}
}

方法重载的意思是一个类中可以有多个方法具有相同的名字,即使方法类型不同,这些方法的参数必须不同,即参数的个数不同,或者参数的类型不同。

Person类对构造方法进行了重载

下面通过四组Child类和Test类代码,来体现super和this关键字的具体应用

一、子类默认调用父类无参构造方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Child extends Person{
}

Child类中默认有一个父类(Person)的无参构造方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Test {
	public static void main(String args[]){
	Child child =new Child();
	}
}

运行结果为:

one person

二、子类无参构造方法中默认调用父类无参构造方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Child extends Person{
	public Child(){
		//super();
		System.out.println("a child");
	}
}

子类每一个构造方法的第一行都有一条默认的语句super();

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Test {
	public static void main(String args[]){
	Child child =new Child();
	}
}

上面Child类中如果不加super();语句,系统也会默认加上,运行结果都为:

one person a child

三、子类有参构造方法中默认调用父类无参构造方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Child extends Person{
	private String hobby;
	public Child(String hobby){
	    //super();
		this.hobby=hobby;
		System.out.println("子类的爱好"+hobby);
	}
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Test {
	public static void main(String args[]){
	Child childone =new Child("篮球");
	}
}

上面Child类中如果不加super();语句,系统也会默认加上,运行结果都为:

one person 子类的爱好篮球

四、子类通过this()调用自己的无参构造函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Child extends Person{
	private String hobby;
	public Child(String hobby){
	//	super();
		this();					//调用自己的构造函数,super()和this()不能同时使用
		this.hobby=hobby;
		System.out.println("子类的爱好"+hobby);
	}
	public Child(){
		super();
		System.out.println("a child");
	}
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Test {
	public static void main(String args[]){
	Child childone =new Child("篮球");
	}
}

  • 上面Child类中构造函数如果不加super();语句,系统也会默认加上
  • this();语句调用自己的构造函数
  • 但是super()和this()不能同时使用

Child类中不加this();语句运行结果为:

one person 子类的爱好篮球

Child类中加上this();语句运行结果为:

one person a child 子类的爱好篮球

注意:

当父类中没有空参数的构造方法时,子类的构造方法必须通过this或者super语句指定要访问的构造方法

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
this关键字与super关键字详解
也就是说当存在同名的成员变量与局部变量时,在方法的内部访问的是局部变量,那是因为Java采取的是就近原则访问的,要解决这个问题就需要使用this关键字;
全栈程序员站长
2022/07/02
7220
this关键字与super关键字详解
Java中的两个关键字——super、this
1、当子类和父类都有同名的属性时,在子类中如果要使用父类的属性 super . 属性
用户6182664
2019/09/05
5260
Java中的两个关键字——super、this
Java this 关键字用法
构造方法是一个类的对象在通过new关键字创建时自动调用的,在程序中不能向调用其他方法一样通过方法名(也就是类名)来调用。但如果一个类有多个构造方法,可以在一个构造方法中通过this(paras…)来调用其他的构造方法。 使用this来调用其他构造方法有如下几个约束。 1) 只能在构造方法中通过this来调用其他构造方法,普通方法中不能使用。 2) 不能通过this递归调用构造方法,即不能在一个构造方法中通过this直接或间接调用该构造方法本身。 例如:
全栈程序员站长
2022/09/13
2220
Java中super关键字详解
在Java的基础学习中,慢慢接触到许多陌生的关键字,今天来讲一下我所认识的super关键字
用户7886150
2021/02/02
3520
Java关键字super解释
Java是一种强类型、面向对象的编程语言,它包含了一组预先定义的关键字,这些关键字具有特殊的语法含义,用于实现特定的编程构造和功能。例如,public、private、class、interface等都是Java中的关键字,它们分别用于定义访问修饰符、类和接口等。
王也518
2024/04/27
1900
Java关键字super解释
在Java中this关键字和super关键字
一个对象对应一个this,this是一个变量,是一个引用。this保存当前对象的内存地址指向自身。 super关键字代表的就是“当前对象”的那部分父类型特征。
技术交流
2022/11/18
6230
在Java中this关键字和super关键字
【JAVA-Day57】深度解析Java中的this和super关键字:用途、差异和实际应用
标题: “深度解析Java中的this和super关键字:用途、差异和实际应用” 🚀📚🤔🎯🌟⏱️🔄
默 语
2024/11/20
930
【JAVA-Day57】深度解析Java中的this和super关键字:用途、差异和实际应用
java基础学习-super关键字
super是直接父类对象的引用 可以通过super来访问父类中被子类覆盖的方法或属性 普通方法: 没有顺序限制。可以随便调用 构造函数中: 任何类的构造函数中,若是构造函数的第一行代码没有显示的调用super(...);那么Java会默认都会调用super();作为父类的初始化函数。所以你这里的super();加不加都无所谓。 package extand; //父类 public class A { String name; public void eat(){ Syste
FutureTester
2021/12/26
2970
super关键字
由于设计不好,或者场景需要,子类和父类中可能会存在相同名称的成员,如果要在子类方法中访问父类同名成员时,直接访问是无法做到的, java提供了super关键字,主要作用:在子类方法中访问父类成员。
用户10921393
2024/01/23
1170
Java关键字(六)——super
  在 Java关键字(五)——this 中我们说 this 关键字是表示当前对象的引用。而 Java 中的 super 关键字则是表示 父类对象的引用。
IT可乐
2018/07/24
2750
Java关键字(六)——super
Java中所有的关键字及用法
int 基本数据类型 ,内存空间占8位 取值范围-128~127 int i=10;
全栈程序员站长
2022/09/08
2890
Java中所有的关键字及用法
super 关键字的作用
super 关键字的作用 super 代表父类对象,在子类中访问父类成员 访问父类构造方法 在子类方法中调用且必须是第一句 正文 super 关键字与 this 关键字是不一样的,this 表示当前对象,而 super 关键字代表的是父类对象在程序中,它通常在子类中访问父类中的构造方法,当它在访问父类中的构造方法时,在子类构造方法中调用,但必须是第一条语句,super();调用无参数的构造方法,super(name);调用有参数的构造方法在调用有参数的构 造方法时特点:必须位于第一条语句。 访问父类属性: super.name; 访问父类方法: super.print(); 父类中不能被继承的成员 private 修饰的私有成员 子类和父类不在同包,使用默认访问权限的成员 构造方法 访问修饰符
魏铁锤
2022/11/02
2760
super 关键字的作用
Java继承、final/protected说明、super/this辨析
上面的这个animal就是基类,我们的这个dog和bird都是继承这个基类的特征,使用的是extends这个关键字,表示我们的子类继承父类,父类的这个成员变量和成员方法我们子类都会拥有的;
阑梦清川
2025/02/24
820
Java继承、final/protected说明、super/this辨析
Java学习笔记 (继承、this、super)
重写(Overiding) : 子类继承父类的方法,并重新实现该方法。重写体现了Java优越性,重写是建立在继承关系上,它使语言结构更加丰富。在Java中的继承中,子类既可以隐藏和访问父类的方法,也可以覆盖继承父类的方法。
用户5513909
2023/04/25
1880
Java学习笔记  (继承、this、super)
super和this关键字详解
在每次创建子类对象时,先初始化父类空间,再创建其子类对象本身。目的在于子类对象中包含了其对应的父类空间,便可以包含其父类的成员,如果父类成员非private修饰,则子类可以随意使用父类成员。代码体现在子类的构造方法调用时,一定先调用父类的构造方法。理解图解如下: ![image.png](https://img-blog.csdnimg.cn/img_convert/d49fa776b33855594636f12527476fce.png#clientId=u00444ffb-cab6-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=387&id=u21b9a0db&margin=[object Object]&name=image.png&originHeight=387&originWidth=729&originalType=binary&ratio=1&rotation=0&showTitle=false&size=75893&status=done&style=none&taskId=u88adf289-981b-4982-9e73-e8ecb4c319d&title=&width=729)
共饮一杯无
2022/11/28
2570
java_static、final、super、this关键字的使用
它可以修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象。
咕咕星
2020/08/19
4070
java_static、final、super、this关键字的使用
Java中的 this 和 super
当子类和父类中定义了同名的属性时,想要调用父类中声明的属性,需要通过 super.属性 的方式来表明调用的是父类中声明的属性。
头发还在
2023/10/16
1560
Java中的 this 和 super
Java常见关键字总结:static,final,this,super
这次复习的知识点是面向对象的关键字static,final,this,super,一些注意的点和知识点。
用户7886150
2020/12/13
5410
快速掌握super关键字
super关键字使用于子类访问父类的隐藏成员,它主要用于有继承关系的子类中,用它可以访问父类中被屏蔽的方法、构造方法、属性
田维常
2019/09/02
4050
Java中this关键字的作用和用法
这段代码中,创建了一个类Student,有成员变量name与成员方法SetName(String name),由于成员方法接收的形参名称与成员变量相同,都是name,所以,这里可以使用this关键字来调用本类中的成员变量。其作用可以简单的这么理解:this关键字就是调用本类中的成员变量。
全栈程序员站长
2022/09/12
5740
相关推荐
this关键字与super关键字详解
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文