class A{
public String a;
private A b;
public A getb(){ b=new A();return b;}
}
public class AA{ public static void main(String args[]){
A e = new A();
A r = new A();
//e.getb=new A();
A c = e.getb();         c.a="sfg";          System.out.println(e.getb().a); }
}

解决方案 »

  1.   

    我来解释一下:
    //创建类A
    class A{
    public String a;//定义String引用对象a
    private A b;//定义A的私有对象b
    public A getb(){ b=new A();return b;}//定义方法
    }
    //创建主类
    public class AA{ public static void main(String args[]){
    A e = new A();//定义类对象
    A r = new A();
    //e.getb=new A();
    A c = e.getb();         c.a="sfg";//传值          System.out.println(e.getb().a);//输出 }
    }
      

  2.   

    你想问什么,是不是输出结果不是"sfg"?
    我没运行你的程序,不过我觉得输出结果不是"sfg"
    原因很简单,getb()方法里,每次都是新建一个对象,然后再返回
    A c = e.getb();  //创建一个对象,然后c引用该对象
    System.out.println(e.getb().a);//e.getb()又创建了一个新的对象(与c不是同一个引用了),所以输出结果不会是"sfg"
      

  3.   

    A c = e.getb();  
    //创建一个对象,然后c引用该对象
    System.out.println(e.getb().a);
    //e.getb()又创建了一个新的对象(与c不是同一个引用了),
    输出结果不会是"sfg"
      

  4.   

    我的同意以上两位楼主的意见.
    //e.getb()又创建了一个新的对象(与c不是同一个引用了),
    输出结果应该为"null"
      

  5.   

    谢谢大家!!
    解释的很清楚!!
    不知道这样是不是就可以了!!!
    //创建类A
    class A{
    public String a;//定义String引用对象a
    private A b=new A();//定义A的私有对象b
    public A getb(){return b;}//定义方法
    }
    //创建主类
    public class AA{public static void main(String args[]){
    A e = new A();//定义类对象
    A r = new A();
    //e.getb=new A();
    A c = e.getb();         c.a="sfg";//传值          System.out.println(e.getb().a);//输出}
    }