- class Outer
- {
- private static int num=3;
- static class Inner //内部类
- {
- void show()
- {
- System.out.println("show run..."+num);
- }
- static void function()//如果内部类中定义了静态成员,该内部类也必须是静态的;
- {
- System.out.println("function run..."+num);
- }
- }
- public void method()
- {
- Inner in=new Inner();
- in.show();
- }
- }
- class InnerClassDemo
- {
- public static void main(String[] args)
- {
- Outer out=new Outer();
- out.method();
- /*
- //直接访问外部类中的内部类的成员(内部类非静态)
-
- Outer.Inner in=new Outer().new Inner();
- in.show();
- //也可以写作
- Outer out-new Outer();
- Outer.Inner in=out.new Inner();
- in.show();
- */
- //如果内部类是静态的,那就相当于外部类
- Outer.Inner in=new Outer.Inner();
- in.show();
- //如果内部类是静态的,成员是静态的
- Outer.Inner.function();
- }
- }
复制代码 内部类可以是静态的,而且内部类里面可以有静态成员呀。
如果内部类有静态成员的话,那么内部类必须是静态。 |