class Outer
{
     int a;
     
     class Inner
     {
          
     }
}如果建两个外部类的对象。这两个对象分别有a的一份拷贝吧。那如果建一个外部类的对象,建一个内部类的对象。
外部类对象.a跟内部类对象.a      是分别有一份a的拷贝   还是共享的?如果建两个内部类的对象,那这两个内部类的对象是分别有一份a的拷贝    还是共享的?
内部类与外部类的关系我没搞清楚

解决方案 »

  1.   

    package ch5;public class A {
     String str="22332";
    public A(){
    System.out.println("Outer:"+str);
    }
    public String getStr(){
    return str;
    }
    public void setSs(String str){

    }
    class C{
    public C(){
    System.out.println("Inner"+str);
    }
    public String getStr(){
    return str;
    }
    }
    public static void main(String[] args){
    A a=new A();
    A.C cc=a.new C();
    a.str="6666";
    System.out.println(cc.getStr());
    }}
    找印结果:
    Outer:22332
    Inner22332
    6666
    可以看出,属性是共享的,也就是说,内部类是外部类的一部分
      

  2.   

    使用内部类的原因
    内部类的方法可以访问它所在的外部类中的所有域,包括私有型别的;
    对于同一个包中的其它类它是隐藏的;
    匿名的内部类可以让我们很方便的定义事件响应(call back),这在GUI编程中很常见内部可以访问外部类的属性和方法,他们是共同来使用得
      

  3.   

    外部类对象.a跟内部类对象.a      是分别有一份a的拷贝   还是共享的? 
    答:使用内部类是也是通过外部类.内部类来使用得,你如果定义成这样
    A a=new A();
    A.C cc=a.new C(); 
    那他们就是共享使用a的,