Частные методы в наследовании
Вот'Интересный фрагмент кода:
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 имеет доступ к приватному члену своего родителя?