从内部类继承

Nic*_*ick -3 java oop class

public class A {
    public A() {
        System.out.println("A()");
    }

    public class B {
        public B() {
            System.out.println("B()");
        }
    }
}
class Caller extends A.B {
    Caller(A a){
        a.super();
    }
}


public class Main {
    public static void main(String[] args) {
        Caller as= new Caller(new A());
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我们需要a.super()在课堂上调用扩展内部类?它在做什么?

没有a.super()程序不想编译.

Error:(48, 20) java: an enclosing instance that contains A.B is required
Run Code Online (Sandbox Code Playgroud)

Joh*_*ger 5

a.super() 不会调用A构造函数.的A构造运行作为表达的结果new A()Main.main().

a.super()调用零元(只)B的构造,指定a为的含实例的引用A,其中,因为内部类的子类A.B中,每个Caller必须具备的.