看书,比如java核心技术,讲的很仔细,内部类这玩意不是一句两句就能说清楚的,不过概要的说定义内部类的主要原因是它可以访问它的外部类的私有数据。而对于同一包的其他类来说,内部类能隐藏起来。

解决方案 »

  1.   

    An inner class is a nested class that is not explicitly or implicitly declared
    static. Inner classes may not declare static initializers or member interfaces.
    Inner classes may not declare static members, unless they are compile-time
    constant fields.A local class is a nested class that is not a member of any class and that has a
    name. All local classes are inner classes.An anonymous class declaration is automatically derived from a class instance
    creation expression by the compiler.A member class is a class whose declaration is directly enclosed in another class
    or interface declaration. Similarly, a member interface is an interface whose declaration
    is directly enclosed in another class or interface declaration.                  class
                        |
           +------------+------------+
           |                         |
           top-level class           nested class
                                           |
                    +----------------------+----------+
                    |                                 |
                    inner class                       static member clsss
                         |
         +---------------+-----------+--------------------------+
         |                           |                          |
         non-static member class     local class                anonymous class
    所有类:
        顶层类:不在任何类之内的类。默认在包内可见,若是public的则包外可见,但必须占用自己的Compilation Unit。顶层类不能用其他修饰符。
        内嵌类:处于某类之内的类。其外层的类是该类的信封类。
            成员类:是内嵌类,但不在其信封类的任何方法/块中。仅该种类可用protected或private修饰
                静态成员类:是成员类,有static修饰。
                非静态成员类:是成员类,无static修饰。
            本地类:是内嵌类,且在其信封类的某方法/块中。                  class
                        |
           +------------+------------+
           |                         |
           top-level class           nested class
                                           |
                    +----------------------+-------------------------------+
                    |                                                      |
               member class                                           local clsss
                    |                                                      |
    +---------------+-----------+                       +------------------+---+
    |                           |                       |                      |
    non-static member class     static member clsss     named class            anonymous class