Java 关键字super

本文详细介绍了Java中的super关键字,包括其与this的区别、使用场景和在构造方法中的应用。通过实例代码展示了super在实例方法中的用法,强调super()用于调用父类构造方法,完成父类型特征的初始化,同时探讨了对象创建过程中的内存结构变化。
摘要由CSDN通过智能技术生成

在这里插入图片描述
在这里插入图片描述
super和this可以对比着学习:
this
● this是一个引用,保存内存地址指向自己。

● this出现在实例方法中,谁调用这个实例方法,this就代表谁,this代表当前正在执行这个动作的对象。

● this不能出现在静态方法中。

● this大部分情况下可以省略,在方法中区分实例变量和局部变量的时候不能省略。

●“this(实际参数列表)”出现在构造方法第一行,通过当前的构造方法去调用本类当中其它的构造方法。
super
严格来说,super其实并不是一个引用,它只是一个关键字,super代表了当前对象中从父类继承过来的那部分特征。this指向一个独立的对象,super并不是指向某个“独立”的对象,假设张大明是父亲,张小明是儿子,有这样一句话:大家都说张小明的眼睛、鼻子和父亲的很像。那么也就是说儿子继承了父亲的眼睛和鼻子特征,那么眼睛和鼻子肯定最终还是长在儿子的身上。假设this指向张小明,那么super就代表张小明身上的眼睛和鼻子。换句话说super其实是this的一部分。如下图所示:张大明和张小明其实是两个独立的对象,两个对象内存方面没有联系,super只是代表张小明对象身上的眼睛和鼻子,因为这个是从父类中继承过来的,在内存方面使用了super关键字进行了标记,对于下图来说“this.眼睛”和“super.眼睛”都是访问的同一块内存空间。
在这里插入图片描述
● super和this都可以使用在实例方法当中。

● super不能使用在静态方法当中,因为super代表了当前对象上的父类型特征,静态方法中没有this,肯定也是不能使用super的。

● super也有这种用法:“super(实际参数列表);”,这种用法是通过当前的构造方法调用父类的构造方法。

接下来,我们来测试一下:

public class SuperTest01 extends Object{
   
	//实例方法
	public void doSome(){
   
		System.out.println(this);
		System.out.println(super);
	}
}

编译报错了:在这里插入图片描述
图14-2:this可以单独输出,super不能

通过以上的测试,可以看出this是可以单独使用的引用,但super无法输出,编译器提示super要使用必须是“super.xxx”,显然super并不指向独立的对象,并不是保存某个对象的内存地址。

this和super都是无法使用在静态方法当中的。
Java中super关键字的使用(在构造方法中)
super使用在构造方法中,语法格式为:super(实际参数列表),这行代码和“this(实际参数列表)”都是只允许出现在构造方法第一行(这一点记住就行了),所以这两行代码是无法共存的。****“super(实际参数列表)”这种语法表示子类构造方法执行过程中调用父类的构造方法。
我们来看一段代码:

public class People {
   
	String idCard;
	String name;
	boolean sex;
	public People(){
   
	}
	public People(String idCard,String name,boolean sex){
   
		this.idCard = idCard;
		this.name = name;
		this.sex = sex;
	}
}
public class Student extends People{
   
	//学号是子类特有的
	int sno;
	public Student(){
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值