Там нет ошибок или скрытых функций не происходит.Вы, вероятно, смешиваете наследование и внутренние классы.
A нестатический внутренний класс может обращаться к переменным своего внешнего класса, даже если они закрытые.
public class StackOverflow {
private String abc;
public class StackOverflowExtended extends StackOverflow {
public StackOverflowExtended() {
abc = "";
}
}
}
Статический внутренний класс не может получить доступ к полям своего внешнего класса, потому что он статический.Он может существовать, не имея экземпляра своего внешнего класса.
Причина, по которой super.abc
работает со статическим внутренним классом, заключается в том, что он является его подклассом.Доступность, не зависящая от области его действия, опять же обусловлена тем, что он является внутренним классом.