请教一个关于this的问题

wj10159769 2012-06-05 04:55:02
class A
{
private B b = null;
public void fun()
{
this.b = new B(this);
this.b.fun();
}
public void print()
{
System.out.println("Hello World!!!");
}
}
class B
{
private A a = null;
public B(A a)
{
this.a = a;
}
public void fun()
{
this.a.print();
}
}

public class ThisDemo07
{
public static void main(String[] args)
{
new A().fun();
}
}
请教下这个结果最后为什么输出helloworld
...全文
110 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Martiniez 2012-06-05
  • 打赏
  • 举报
回复
我试下来解答吧!

class A的private B b = null 和 class B的 private A a =null;
这里创建了
B的一个对象 和 A的一个对象
权限是private,也就是说只有本类可以访问。

类A中

public void fun()
{
this.b = new B(this);
this.b.fun();
}

这里this.b中的this指向的是类A中的b(private B b = null)
后面B(this)中this为本类中的对象(this=A a),这跟类B中B的构造函数中的参数一致

public void print(){System.out.println("Hello World!!!");}
这个是类A的方法


类B中

public B(A a){this.a = a;}
类B的构造函数,参数为(A a),函数里的this指向类B中的私有对象a(private A a=null)

public void fun(){this.a.print();}
这里是类B的方法,this.a.print中的this.a指向本类中的私有对象a,最后执行方法print() ( 类A中的方法print() )


Public类中

new A().fun();

这里new A(),首先生成A的对象,因为A没有重写构造函数,所以生成默认的对象A()
然后这个对象执行方法fun()
在A类的方法fun()里,有this指向的B类的方法this.b.fun()---->this.a.print();
也就是
System.out.println("Hello World!!!");

所以最后输出Hello World!!!
五哥 2012-06-05
  • 打赏
  • 举报
回复
public void fun()
{
this.b = new B(this);
/**
这里穿进去的this就是 main方法中new A() ;
b.fun() 中又调用这个new A()的print方法,当然打印helloworld啦
public class ThisDemo07
{
public static void main(String[] args)
{
new A().fun(); //相当于 new A().print() ;

}
}

*/
this.b.fun();
}
dai_ 2012-06-05
  • 打赏
  • 举报
回复
你卡在哪里呢?就是this的用法
huage 2012-06-05
  • 打赏
  • 举报
回复
这不难啊,难道初学啊,this代表自身,A类的this.b就是A的全局变量b

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧