Частные методы в наследовании

Вот'Интересный фрагмент кода:

public class Superclass {

    public static void main (String[] args){
        Superclass obj = new Subclass();
        obj.doSomething(); #prints "from Superclass"
    }

    private void doSomething(){System.out.println("from Superclass");}
}

class Subclass extends Superclass {

    private void doSomething(){System.out.println("from Subclass");}

}

Я знаю, что подклассы не наследуют закрытые члены своего родителя, но здесь obj удается вызвать метод, к которому он не должен иметь доступа. Во время компиляции obj имеет тип Superclass, во время выполнения типа Subclass.

Вероятно, это как-то связано с тем, что вызов doSomething () происходит внутри класса драйвера, который является его собственным классом (и почему он 'Возможно вызвать doSomething () в первую очередь).

Таким образом, вопрос сводится к тому, как obj имеет доступ к приватному члену своего родителя?

Ответы на вопрос(9)

Ваш ответ на вопрос