static inner class 只能使用其外部类的 static 属性

解决方案 »

  1.   

    inner class的问题,更多的人感到迷惑。
    比如,inner class是否能够有static的变量?
    一般的说法是,static inner class能够有static的变量,而non-static inner
    class则不能有static的变量。但是,如果这样:
    class outer {
            class inner {
                    static final int i = 999;
            }
    }
    编译通过。而你不能这么写:
                    static final int i;
    就是说,一定要在声明它的时候赋予初值, 因为i是final的,它的值不能再被改变。
    关于inner class, 还有一个代码也很能说明一些问题。
    public class TestClass
    {
        public TestClass(int i) { }    public void m1()
        {
            TestClass al = new TestClass(10) 
                           { 
                                public void actionPerformed(ActionEvent e)
                                {
                                }
                          };
        }
    }
    这说明了一下四个问题:
    1. 类中的方法也可以有inner classes.(但是他们不能有static inner classes).
    2. Inner class 能够继承包含它的外部class.
    3. 匿名 inner class 可以继承一个 class 或者 implements 一个 interface。
    4. 匿名 inner class 可以有初始化参数。(如果这个class继承的基类有相应的 constructor 的话。)
      

  2.   

    static inner class和普通的类使用上没有任何区别,如果这个static inner class 仅在包含它的类中使用,这样做可以使代码显得简洁。用的时候要用这种方式:FatherClass.NestedClass obj = new FatherClass.NestedClass();
    另外要注意区别于非static的inner class。
      

  3.   

    我做了以下这个测试程序:
    class First
    {
          public static void main(String[] args)
          {
                 new First().sayGoodnight();
          }
          public void sayGoodnight()
          {
                 new Second().sayGoodnight();
          }
          static class Second
          {
                public void sayGoodnight()
                {
                       System.out.println("Say Goodnight!");
                }
          }
    }
    如果Second类是nonstatic的只可以在sayGoodnight方法内初始化,main方法中不可以。
    而如果Second类是static的话,在main方法和sayGoodnight方法内都可以初始化,这样是不是可以得出以下结论:
    static inner class可以被static和nonstatic方法初始化,
    但在static方法内只可以初始化static inner class.
    这样得理解对不对呢?谢谢!!!
      

  4.   

    给你一个连接地址,包里有三篇文章,其中一个是内部类的,我看了之后很有收获,希望对你有帮助。http://www.chinajavaworld.net/doc/wangyou/PDFfiles.zip