Junior — Middle
65
Можно ли изменить реализацию статического метода в подклассе, переопределяя его?
Companies where asked
ylab
Effective Mobile
Answer from AI
sobes.tech AI
В Java статические методы нельзя переопределять в подклассе, так как они принадлежат самому классу, а не объекту. Если в подклассе объявить метод с такой же сигнатурой, это будет не переопределение, а скрытие (method hiding).
При вызове статического метода через имя класса будет вызван метод того класса, к которому относится вызов, а не объекта.
Пример:
class Parent {
static void staticMethod() {
System.out.println("Parent static method");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Child static method");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.staticMethod(); // Выведет "Parent static method"
Child.staticMethod(); // Выведет "Child static method"
}
}
Таким образом, статические методы не полиморфны и не могут быть переопределены.