Да, но если статический метод был удален во время выполнения, будет вызван соответствующий метод в базовом классе (имя и подпись должны точно соответствовать исходному методу во время компиляции, а метод должен быть доступен по правилам спецификации JVM) .
Для уточнения рассмотрим код вызова:
Derived.fn();
И следующий вызываемый код:
class Base {
public static void fn() {
System.err.println("Base");
}
}
class Derived extends Base {
public static void fn() {
System.err.println("Derived");
}
}
Отпечатки Derived
.
Теперь я все компилирую. Затем перекомпилируйте только что полученное значение изменено на:
class Derived extends Base {
}
Отпечатки Base
.
Возможно, тогда я перекомпилирую только что Derived изменилось на:
class Derived {
}
Выдает ошибку.