java-内部类的创建

java 创建内部类时离不开他的外围类,除非内部类是嵌套类(即静态内部类),嵌套类中的内部类也是如此 比如:

public class TestStaticiInnerClass {

    private static class InnerA{

        public void f(){

            System.out.println("this is static inner class method");

        }

        public class InnerB{

            public void g(){

                System.out.println("this is InnerB mehtod");

            }

        }

    }

    public static void main(String[] args) {

        InnerA a = new InnerA();

        a.f();

        InnerA.InnerB b = a.new InnerB();

       b.g();

    }

}

1)调用f()方法:

首先InnerA是一个嵌套类(静态内部类)  该嵌套类中有一个内部类InnerB,

由于InnerA是嵌套类 所以调用它里面的非静态方法f()时 需要创建InnerA对象 除非方法f()是静态的

而无需它的外围类TestStaticiInnerClass对象。

2) 调用g()方法:

由于g()方法属于InnerB 而InnerB不是嵌套类,所以调用g()方法需要首先创建InnerB对象

上面说了 InnerB不是嵌套类 而是普通内部类,要创建它的对象必须要知道它的所属外围类 

即:外围类.内部类  引用 = 外围类引用.new 内部类();

另外:普通的内部类中是不能有静态数据和字段的 这点在编译期间就能发现。

你可能感兴趣的:(java-内部类的创建)