Sobes.tech
Назад к вопросам
Junior — Middle
78

Чем отличается статический полиморфизм от динамического в контексте объектно-ориентированного программирования?

Компании, где спрашивали
IRLIX

Ответ от нейросети

sobes.tech AI

Статический полиморфизм (compile-time polymorphism) реализуется через перегрузку методов и операторов, когда выбор конкретной версии метода происходит во время компиляции. Это позволяет использовать один и тот же метод с разными параметрами.

Динамический полиморфизм (run-time polymorphism) достигается через переопределение методов в наследуемых классах и использование виртуальных методов. Выбор конкретной реализации метода происходит во время выполнения программы, что позволяет объектам вести себя по-разному в зависимости от своего реального типа.

Пример статического полиморфизма:

class Calculator {
    int sum(int a, int b) { return a + b; }
    double sum(double a, double b) { return a + b; }
}

Пример динамического полиморфизма:

class Animal {
    void sound() { System.out.println("Some sound"); }
}
class Dog extends Animal {
    @Override
    void sound() { System.out.println("Bark"); }
}

Animal a = new Dog();
a.sound(); // Выведет "Bark"