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 内部类();
另外:普通的内部类中是不能有静态数据和字段的 这点在编译期间就能发现。
网友评论