日期:2014-05-20  浏览次数:20727 次

关于把内部类写在外部类的外部的一个问题 相当于两个类之间的调用问题 请高手指教
这是关于内部类的一个代码
class Outer
{
int outer_i=100;
  void test()
{
Inner in =new Inner();
in.display();
}
class Inner
{
void display()
{
System.out.println("outer_i= "+outer_i);
}
}

public static void main(String [] args)
{
Outer outer=new Outer();
outer.test();
}
}

简单说 就是说类Inner 是 Outer 的一个内部类。现在要把这个内部类该写在外边,成为两个独立的累。实现两个类之间的调用 
代码如下class Outer
{
int outer_i=100;
  void test()
{
Inner in =new Inner(this);
in.display();
}

public static void main(String [] args)
{
Outer outer=new Outer();
outer.test();
}
}
class Inner

{
Outer outer;
public Inner(Outer outer)
{
this.outer=outer;
}
void display()
{
System.out.println("outer_i= "+outer.outer_i);
}
}
这这段代码中,Inner类中的第一行Outer outer;是什么意思呢?想不明白。还有最后一行中System.out.println("outer_i= "+outer.outer_i);为啥又是outer.outer_i呢?请高人为在下指点迷津啊。本人为自学java。。。如果高人觉得问题简单了 请勿见笑




------解决方案--------------------
class Outer
{
int outer_i=100;
void test()
{
Inner in =new Inner();
in.display();
}
class Inner
{
void display()
{
System.out.println("outer_i= "+Outer.this.outer_i);
}
}

public static void main(String [] args)
{
Outer outer=new Outer();
outer.test();
}
}

在内部类中也是调用Outer的一个对象 和外面的道理是一样的只不过在内部类的时候 可以直接访问到Outer.this 而在外部类的时候只能将 Outer对象作为一个参数传递给Innner 这样才可以使用outer_i


------解决方案--------------------
Outer outer;// 这是Inner类的一个成员变量,保存一个Outer对象的引用
System.out.println("outer_i" + outer.outer_i);//这个当然是outer_i了,要么lz想打印什么?