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

解决方案 »

  1.   

    这不难啊,难道初学啊,this代表自身,A类的this.b就是A的全局变量b
      

  2.   

    你卡在哪里呢?就是this的用法
      

  3.   

    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();
    }
      

  4.   

    我试下来解答吧!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!!!