this指针简介

本文介绍了this指针的基本概念及其在方法调用中的作用,并详细解释了如何通过this指针区分同名字段,以及在构造器中正确使用this指针的方法。

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

this指针简介

  • 系统内部如何区分是哪个对象调用函数方:
Objcet a = new Object();
Object b = new Object();
a.f(1);
b.f(2);

为了能用简便的面向对象的语法来书写代码——亦即“将消息发给对象”,编译器为我们完成了一些幕后工作其中的秘密就是第一个自变量传递给方法 f (),而且那个自变量是准备操作的那个对象的句柄所以前述的两个方法调用就变成了下面这样的形式(注:这是内部的表达形式,我们并不能这样书写表达式):

Objcet .f(a,1);

Objcet .f(b,2); 

由于函数f()中的a,b是由编译器隐式传输的,所以我们并不能直接在函数f()中获取到对象a,b,这时候便可以通过this指针获取到“这个对象”,a和b。

  • 方法内部如何区分字段名称相同但属性不同的字段:
如上所说,我们可以通过this指针获取到当前调用函数的对象,所以当字段名场相同时,可以使用this指针来区分,例如:
class TestThis {
    
    private int d;
    private int e;

    public void f(int d) {
        this.d = d;
    }

    public void f(int d, int e) {
        this.f(d);
        this.e = e;
    }

}
因为this指针拥有的引用地址是调用改函数的对象的地址,所以this指针后面的属性d表示对象的属性,等号后面没有this带领的d时函数中的参数变量d。
  • 构造器中使用this指针
因为构造器函数是用来实例化(新建)对象的,所以不存在隐式传输对象的情况,此时this指针表示的则是“当前对象”,此时使用this(d)则会调用对应的构造函数(只能调用一次,且需要在函数最开头调用,this()和superI()不能同时调用),this.e则表示当前对象的属性e。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值