问题1:嵌套类 Inside 在什么情况下可以通过 Inside inner = new Inside();这样的方式来生成对象?
public class Outside{
  public class Inside{  
  }
}问题2:一个嵌套类是否是 static 其区别主要是哪写??关于访问顶层类的静态成员又有什么区别??问题3:如果有2个类,class1 和 class2 其中在 class2 的构造函数中生成了 class1 的2个对象,那么当调用 class2 的构造函数创建对象时,拥有2个属于 class1 的对象,那么此时 class2 的对象和那2个属于 class1 的对象之间是属于什么关系??类变量持有的是对象的引用,那么 class2 的对象拥有2个类变量,其2个变量又分别拥有2个对象的引用,那么可不可以说,class2 的对象拥有的那2个class1 对象的引用??

解决方案 »

  1.   

    关注下..  看来又得回笼一下  Thinking in Java 了....
      

  2.   

    问题1:第一是在外部类Outside非static方法和区域中是可以的呀,另就是在外部类的外面或外部类的static方法或区域中时,不过要先有外部类的实例先,不和你的写法完全一致比如Outside out = new Outside();
    Outside.Inside inner = out.new Inside();问题2:非static的嵌套类,在外部类的外面要访问的话,就要先构造外部类,如果static的话就不用了呀.访问static和嵌套类没啥关系呀,因为都是用外部类去访问static呀,不需要外部类的对象呀
    问题3:如果两class1的变量 是class2的类变量 的话,是可以这么说呀,如果只是在构造函数中的局部变量那就不是了
      

  3.   

    在另一个类中定义的类就是嵌套类(nested classes)。嵌套类的范围由装入它的类的范围限制。这样,如果类B被定义在类A之内,那么B为A所知,然而不被A的外面所知。嵌套类可以访问嵌套它的类的成员,包括private 成员。但是,包围类不能访问嵌套类的成员。嵌套类一般有2种类型:前面加static标识符的和不加static 标识符的。一个static的嵌套类有static修饰符。因为它是static,所以只能通过对象来访问它包围类的成员。也就是说,它不能直接引用它包围类的成员。因为有这个限制,所以static嵌套类很少使用。嵌套类最重要的类型是内部类(inner class)。内部类是非static的嵌套类。它可以访问它的外部类的所有变量和方法,它可以直接引用它们,就像外部类中的其他非static成员的功能一样。这样,一个内部类完全在它的包围类的范围之内。