相关疑难解决方法(0)

外部与超级课程

超级优先级比外级优先级高吗?

考虑我们有三个类:

  1. ClassA的
  2. ClassB的
  3. ClassB中的匿名类,它扩展了ClassA

ClassA.java:

public class ClassA {
    protected String var = "A Var";

    public void foo() {
        System.out.println("A foo()");
    }
}
Run Code Online (Sandbox Code Playgroud)

ClassB.java:

public class ClassB {
    private String var = "B Var";

    public void test() {

        new ClassA() {
            public void test() {
                foo();
                System.out.println(var);
            }
        }.test();
    }

    public void foo() {
        System.out.println("B foo()");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我打电话时new ClassB().test(),我得到以下输出(这是非常期待的):

A foo()
A Var
Run Code Online (Sandbox Code Playgroud)

问题:它是在某个地方定义的,内部类首先从超类中获取(方法和成员),然后从外部类中获取,还是依赖于JVM编译器实现?我查看了JLS(§15.12.3),但找不到任何参考,也许有人指出,但我误解了一些条款?

java inheritance inner-classes

14
推荐指数
1
解决办法
490
查看次数

标签 统计

inheritance ×1

inner-classes ×1

java ×1