class Outer
{
  int out_i=30;
  void test()
  {
   Inner in=new Inner(this);
   in.display();
  }
   public static void main(String[] args)
   {
     Outer out=new Outer();
     out.test();
    }
    class Inner//类后面不要加括号是class Inner{}而不是class Inner(){}
  {
   Outer outer;
   public Inner(Outer outer)
   {
     this.outer=outer;
   }
    void display()
    {
      System.out.println("out_i="+outer.out_i); //system.out.println()括号里面的变量连接是+,而不是逗号,
    }
  }
}

解决方案 »

  1.   

    this指的是当前的对象。class Inner//内部类
      {
      Outer outer;
      public Inner(Outer outer)//内部类构造
      {
        this.outer=outer;  //指创建对象的时候传入参数outer,赋给当前对象的属性outer
      } 
      

  2.   

    补充:Inner in=new Inner(this); //这个this是指把外部类当前的对象作为参数传给Inner构造器public Inner(Outer outer)//
      {
        this.outer=outer;  //指内部类创建对象的时候传入参数outer,赋给当前内部类对象的属性outer
      } 
      

  3.   

    Inner in=new Inner(this); //this 指的是当前对象,在这也就是指在main方法体里Outer out=new Outer(); 产生的对象
      

  4.   

    this都是指当前对象
    Inner in=new Inner(this);//this指Outer的对象
    this.outer=outer;//this指Inner的对象
      

  5.   

    构造方法就是不是只有对象才能调动,当你new的时候就会调动构造函数,而那个this就是代表当前对象,可以这样理解也就是在你调构造函数的时候传了一个this进去,代表当前对象,this.outer就是当前对象的成员变量了,要是你不用this.那就是构造函数自己的参数赋值给自己了.也就是没有初始化成员变量。
      

  6.   

    Inner in=new Inner(this); //这个this指的是Outer 对象
    this.outer=outer;  //这个this指的是Inner对象