还是有关java this关键字的一个问题···
来这边提问好几遍了···都没有得到自己想要的答案。真的很希望弄清楚这个问题,楼主是刚接触java语言的大学生。是这样在清华大学出版社出版的Java程序设计第三版这一书的1...
来这边提问好几遍了···都没有得到自己想要的答案。真的很希望弄清楚这个问题,楼主是刚接触java语言的大学生。
是这样在 清华大学出版社出版的 Java程序设计 第三版这一书的103页有关this这个知识点他最后一句是这么说的:有些情况下this 关键字是必须的,例如,在完全独立的类中调用一个方法,同时把对象实例作为一个自变量来传送,此时,要用this指明对哪个对象实例进行操作。
例如:
Birthday bDay = new Birthday(this);
这句话到底怎么理解啊···我看了好多资料都没有弄清楚···能不能有人指引我一下···拜托了! 展开
是这样在 清华大学出版社出版的 Java程序设计 第三版这一书的103页有关this这个知识点他最后一句是这么说的:有些情况下this 关键字是必须的,例如,在完全独立的类中调用一个方法,同时把对象实例作为一个自变量来传送,此时,要用this指明对哪个对象实例进行操作。
例如:
Birthday bDay = new Birthday(this);
这句话到底怎么理解啊···我看了好多资料都没有弄清楚···能不能有人指引我一下···拜托了! 展开
展开全部
这句话说得没错,但是说处多余了。
其实,简单点说,就是要将当前类实例作为参数交给另一个类的函数处理时,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 。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询