Это «скрытие», а не «переопределение». Чтобы увидеть это, измените метод main
на следующий:
public static void main (String[] arghh) {
next n = new next();
n.show();
stat13 s = n;
s.show();
}
Это должно напечатать:
Static in derived
Static in base
Если бы происходило настоящее переопределение, вы бы увидели:
Static in derived
Static in derived
Обычно считается плохим стилем вызывать статический метод с использованием типа экземпляра ... как вы делаете ... потому что легко думать, что вы вызываете метод экземпляра, и запутаетесь, думая, что переопределение это происходит. Средство проверки стиля Java / инструмента аудита кода обычно помечает это как ошибку стиля / потенциальную ошибку.