Внешний класс против суперкласса

Имеет ли super более высокий приоритет, чем внешний класс?

Предположим, у нас есть три класса:

  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()");
    }
}

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()");
    }
}

Когда я вызываю new ClassB (). Test () , я получаю следующий результат ( что вполне ожидаемо):

A foo()
A Var

Вопрос: Определено ли где-то, что внутренний класс принимает (методы и члены) сначала из суперкласса, а затем из внешнего класса, или это зависит от реализации компилятора JVM ? Я просмотрел JLS (§15.12.3), но не нашел для этого никакой ссылки, может быть, там указано, но я неправильно понял некоторые термины?

14
задан aioobe 3 May 2011 в 13:54
поделиться