- 例3: 当内部类中定义了静态成员,该内部类必须是static的。如果该内部类不定义成静态的,代码及结果如下.
- class Outer
- {
- private static int x = 3;
-
- class Inner // 只需要将 Inner 类定义成静态的即可成功运行。
- {
- static void function()
- {
- System.out.println("inner:"+x);
- }
-
- }
- }
- class Test
- {
- public static void main(String[] args)
- {
- Outer.Inner.function();
- }
- }
复制代码 运行结果:
Exception in thread "main" java.lang.Error: 无法解析的编译问题:
方法 function 不能声明为“静态”;只能在静态类型或顶级类型中才能声明静态方法
at Outer$Inner.function(Test.java:7)
at Test.main(Test.java:19)
范例分析:
当内部类中定义了静态成员,该内部类必须是static的。内部类 Inner 定义了静态成员 (成员变量、成员方法),静态规定,要访问静态方法,那么该类必须是静态的。
|