class Outer{ // 外部类
private String info = "Hello World!!!" ;
public String getInfo(){
return this.info ;
}
public void fun(){
new Inner(this).print() ; // 产生内部类的对象,并调用内部类的方法
}
}
class Inner { // 内部类
private Outer outer = null ;
public Inner(Outer outer){
this.outer = outer ;
}
public void print(){
System.out.println(this.outer.getInfo()) ; // 打印外部类的info属性
}
}
public class InnerDemo02{
public static void main(String args[]){
new Outer().fun() ;
}
}
帮忙下这个程序的内存走向尤其是两个类之间的相互调用不是很理解谢谢了

解决方案 »

  1.   


    package com.neusoft.test;class Outer { // 外部类
        private String info = "Hello World!!!";    public String getInfo() {
            return this.info;
        }    public void fun() {
            new Inner(this).print(); // 第二步,将自身传入Inner的构造器,此时print方法未执行
                                    // 第四步,执行新生成的Inner对角的print方法
        }
    }class Inner { // 内部类
        private Outer outer = null;    public Inner(Outer outer) {
            this.outer = outer; // 第三步,设置自身的Outer类属性
        }    public void print() {
            System.out.println(this.outer.getInfo()); // 第五步,输出
        }
    }public class Test {
        public static void main(String args[]) {
            new Outer().fun(); // 第一步,生成一个Outer类对象,调用它的fun方法
        }
    }
      

  2.   

    问个问题上面的Inner类中  private Outer outer = null;    public Inner(Outer outer) {
            this.outer = outer; // 第三步,设置自身的Outer类属性
        }
    的这段代码意义是什么呢 不写可以么 还有上面的  new Inner(this).print(); 是在Outer 内部开辟了堆空间么  具体的内存走向 我弄不清楚
      

  3.   

    还有上面 new Inner(this).print(); 这里的this只的是什么呢 是Inner还是outer
      

  4.   

    没用IDE???
    用的话提示应该很详细。