Java中关于this变量用法的问题

classA{publicA(){newB(this).print();}publicvoidprint(){System.out.println("HellofromA... class A{
public A(){
new B(this).print();
}
public void print(){
System.out.println("Hello from A");
}
}

class B{
A a; //????

public B(A a){ //????
this.a=a;
}
public void print(){
a.print();
System.out.println("Hello from B");
}
}

public class ThisUse{
public static void main(String[] args){
new A(); //????
}
}
请具体解释一下程序,谢谢
展开
 我来答
百度网友3ede449
2007-12-20 · TA获得超过364个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:192万
展开全部
class A{
//A的构造函数,创建了一个匿名的对象B,B的构造函数的参数是A的实例,然后调用B的print方法
public A(){
new B(this).print();
}
public void print(){
System.out.println("Hello from A");
}
}

class B{
A a; //在B类中声明了一个A类型变量a

public B(A a){ //B的构造函数,参数是A
this.a=a; //将参数a传递给B对象中的a变量
}
public void print(){
a.print(); //调用了B对象中的a变量的print方法
System.out.println("Hello from B");
}
}

public class ThisUse{
public static void main(String[] args){
new A(); //创建一个匿名的A类对象
}
}

显示结果为:
Hello from A
Hello from B

注意点:观察两个类构造函数的结构,分析被调用的方法的先后顺序。在这里this的作用体现在:
new B(this).print(); A将自己的实例对象当作参数传入B的构造函数;
this.a=a; 调用了B自己的实例对象的变量a,为其赋值。
百度网友68ebec1
2007-12-20 · TA获得超过757个赞
知道小有建树答主
回答量:832
采纳率:0%
帮助的人:542万
展开全部
this在哪个类中,就表示引用的哪个类.
就拿你写的来说,
class B{
A a; //????

public B(A a){ //????
this.a=a;
}
/////////////////////////////////
this.a=a;
你总不能写a=a;吧,this.a代表的是A a,你在B中定义的这个a,不是public B(A a)这里的形参.
this.a=a;后面那是a才是pblic B(A a)中的a.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e9cda73
2007-12-20 · TA获得超过5099个赞
知道小有建树答主
回答量:454
采纳率:50%
帮助的人:329万
展开全部
this相当于实例化过的自己
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式