Back to questions
Junior — Middle
77
Чем отличается статический полиморфизм от динамического в контексте объектно-ориентированного программирования?
Companies where asked
IRLIX
Answer from AI
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"