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)
a.super() 不会调用A构造函数.的A构造运行作为表达的结果new A()在Main.main().
该a.super()调用零元(只)B的构造,指定a为的含实例的引用A,其中,因为内部类的子类A.B中,每个Caller必须具备的.