Назад к вопросам
Junior — Middle
65
Каким образом статические методы в объектно-ориентированном программировании отличаются от методов, переопределяемых в дочерних классах?
Компании, где спрашивали
Effective Mobile
Ответ от нейросети
sobes.tech AI
Статические методы в Java принадлежат самому классу, а не экземплярам. Они вызываются через имя класса и не могут быть переопределены в дочерних классах, поскольку не участвуют в полиморфизме.
В отличие от них, методы, которые можно переопределять (нестатические), принадлежат объектам и поддерживают динамический полиморфизм. При вызове метода через ссылку на базовый класс фактическая реализация определяется типом объекта во время выполнения.
Пример:
class Parent {
static void staticMethod() {
System.out.println("Parent static method");
}
void instanceMethod() {
System.out.println("Parent instance method");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Child static method");
}
@Override
void instanceMethod() {
System.out.println("Child instance method");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.staticMethod(); // Выведет: Parent static method
p.instanceMethod(); // Выведет: Child instance method
}
}
Здесь статический метод вызывается по типу ссылки (Parent), а нестатический — по типу объекта (Child).