还是有关java this关键字的一个问题···

来这边提问好几遍了···都没有得到自己想要的答案。真的很希望弄清楚这个问题,楼主是刚接触java语言的大学生。是这样在清华大学出版社出版的Java程序设计第三版这一书的1... 来这边提问好几遍了···都没有得到自己想要的答案。真的很希望弄清楚这个问题,楼主是刚接触java语言的大学生。
是这样在 清华大学出版社出版的 Java程序设计 第三版这一书的103页有关this这个知识点他最后一句是这么说的:有些情况下this 关键字是必须的,例如,在完全独立的类中调用一个方法,同时把对象实例作为一个自变量来传送,此时,要用this指明对哪个对象实例进行操作。
例如:
Birthday bDay = new Birthday(this);

这句话到底怎么理解啊···我看了好多资料都没有弄清楚···能不能有人指引我一下···拜托了!
展开
 我来答
hyjiacan
推荐于2016-04-20 · TA获得超过3912个赞
知道小有建树答主
回答量:894
采纳率:100%
帮助的人:1089万
展开全部

这句话说得没错,但是说处多余了。


其实,简单点说,就是要将当前类实例作为参数交给另一个类的函数处理时,this不能省略。。。


例:

class A {
    public void Test(B b) {
        // 使用B类的实例
        b.xxxxx
    }
}
class B {
    public void Test() {
        // 调用A类的Test方法
        A a = new A();
        a.Test(this);  // 就是这里,这个this也就是B类的当前实例
    }
}
更多追问追答
追问
就是 这个程序的 this这里其实是可以写成 B 的??就是a.Test(B);?
追答

不可以,因为参数需要的是对象实例。

在类B中,其对象实例是本身,也就是this,这个this,你看下面的代码可以理解:

B b  = new B(); 
B b1  =new B();

// 这里的b对象和和b1对象都表示类B的实例,而当使用实例b时,this就是b,当使用b1时,this就是b1,this只有在类实例化后才会存在,当调用 b.Test()的时候,相当于给类A的Test方法传的参数为b;同理,当调用 b1.Test()的时候,相当于给类A的Test方法传的参数为b1 。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式