Java中this和super的使用方法

本文详细介绍了Java编程中this和super关键字的使用场景。this用于引用当前对象,特别是在方法参数与成员变量同名时区分,以及在构造器中调用同一类的其他构造器。super则用于引用父类的成员,包括解决重名问题和调用父类构造器。此外,还对比了两者的区别,强调了它们在构造函数中的位置和调用规则。

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

this的使用场景:

1、当前对象的引用。代码如下:

public class Person {
    private String name;

    private Integer age;

    public Person getCurrentPerson() {
        return this;
    }

    public static void main(String[] args) {
        Person tom = new Person();
        Person person = tom.getCurrentPerson();
        boolean result = person == tom;
        System.out.println("tom和person是否是同一个:"+result);
    }
}

运行结果为:
在这里插入图片描述
说直白点,this指的就是当前对象。可以理解为李小鹏这个同学有两个名字,小鹏和二蛋,这两个名字都是指的是李小鹏这位同学。

2、在类中方法的局部变量跟类的成员变量同名的时候,便于区分,
this.成员变量名来指代成员变量。

public class Person {
    private String name;

    private Integer age;

    public void setName(String name) {
        this.name = name;
    }
   
    public void setAge(Integer age) {
        this.age = age;
    }
}

当然不仅是成员变量,成员方法也可以这样使用。this.方法名().不过一般不这样写,直接写方法名就可以了(假如调用的是子类重写父类的方法,则this.方法()调用的是子类中的方法,super.方法()调用的是父类的方法。)。

3、当一个类中有多个构造器,若要在一个构造方法中调用另一个构造方法,则可以在这个的构造方法的**第一行加上this(…)**来调用另外的构造方法,注意:必须是第一行。

super的使用场景

1、父类的一个引用。可以用super.xxx来引用父类的成员。
2、子类中的成员变量或方法与父类的成员变量或方法重名时,用super.xxx来表示父类的成员。
3、super(参数):调用父类中的某一个构造函数(应为构造函数中的第一条语句)。

区别

1、super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
2、this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
3、super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)
4、this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)
5、调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
6、super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
7、super()和this()均需放在构造方法内第一行。
8、尽管可以用this调用一个构造器,但却不能调用两个。
9、this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
10、this和super都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
11、从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值