区别java关键字this和super

本文解释了Java中this和super这两个关键字的区别,通过实例展示了它们在类继承和构造方法中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初学java,经常会被两个关键字this和super混淆,今天我们就在这里简单区别一下:

     this表示当前对象,也就是当前类对象,

     super表示当前类的父类。


比如你定义一个新的类:A,这个A继承了类B,也就是说B是A的父类。那么如果A中 有个方法:aa();B中也有个方法: aa();

那么在A 中用this.aa()调用的就是A中定义的方法,而super.aa()调用的就是A的父类B中定义的方法aa();

比如两个类,Son类继承Father类

一.super的使用:

Father类:

package demo11;

public class Father {
public Father(String name) {
System.out.println("调用父类构造方法: " + name);
}

public void write() {
System.out.println("父类的write方法:" + "Fathers");
}
}

Son类:

package demo11;

public class Son extends Father {
public Son(String name) {
super(name);
}

public void write() {
System.out.println("子类的write方法:" + "sons");
super.write();
}

public static void main(String[] args) {
Son s = new Son("xiaoming");
s.write();
}
}

控制台输出为:

调用父类构造方法: xiaoming
子类的write方法:sons
父类的write方法:Fathers

由此我们看出,super()调用的是父类的构造方法,当子类继承父类时,通常情况默认调用父类无参构造函数,如果父类没有无参构造函数,那么子类就必须调用super(参数),否则子类编译会报错,同时在子类son方法write()中调用super.write();那么执行s.write();就会调用父类的write()方法,输出:

<span style="font-size:14px;">子类的write方法:sons 
父类的write方法:Fathers</span>


二.this的使用:

Father类:

package demo11;

public class Father {
private String name;// 成员变量

public Father(String name) {
this.name = name; // 当成员变量与局部变量名字一样时,用this.来区别
System.out.println("调用父类构造方法: " + name);
}

public void write() {
System.out.println("父类的write方法:" + "Fathers");
}
}

Son类:

package demo11;

public class Son extends Father {
public Son(String name) {
super(name);
}

public Son() {
this("xiaohong");
}

public void write() {
System.out.println("子类的write方法:" + "sons");
super.write();
}

public static void main(String[] args) {
Son s = new Son("xiaoming");
Son s1 = new Son();
s.write();
}
}

控制台输出:

调用父类构造方法: xiaoming
调用父类构造方法: xiaohong
子类的write方法:sons
父类的write方法:Fathers


由此我们看出:this是指当前对象自己,当在一个类中要明确指出使用对象自己的的变量或函数时就应该加上this引用,如上代码在son子类中使用this(参数)就可以调用其他构造方法,同样也可以实例化。


综上:this是当前对象的引用,super是当前对象的父类对象的引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值