毕老师说:
注意:当内部类中定义了静态成员,该内部类必须是static的。
当外部类中的静态方法访问内部类时,内部类也必须是static的。
我认为第2条可以被打破,new Outer().new Inner2().show();这样的代码静态方法也可以访问非静态内部类的。
- class Outer
- {
- private int x = 3;
-
- static class Inner1//静态内部类
- {
- static void function()
- {
- System.out.println("static inner1 show,x="+new Outer().x);
- }
- }
- class Inner2//非静态内部类(内部类)
- {
- void show()
- {
- System.out.println("inner2 show,x="+x);
- }
- }
- public static void method1()//静态方法
- {
- Inner1.function();//访问本类中的静态内部类
- new Outer().new Inner2().show();//访问本类中的内部类
- }
- public void method2()//方法
- {
- Inner1.function();//访问本类中的静态内部类
- new Inner2().show();//访问本类中的内部类
- }
- }
- class InnerClassDemo
- {
- public static void main(String[] args)
- {
- Outer.method1();//运行其他类的静态方法
- new Outer().method2();//运行其他类的非静态方法
- Outer.Inner1.function();//运行其他类中的静态内部类的方法
- new Outer().new Inner2().show();//运行其他类中的内部类的方法
- }
- }
复制代码
|
|