Назад к вопросам
Middle
107
questionbank
Что такое динамический полиморфизм в Java?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Динамический (или полиморфизм времени выполнения) реализуется через переопределение методов (override). Это означает, что решение о том, какой метод будет вызван, принимается во время выполнения программы, а не во время компиляции.
Ключевые моменты:
- Наследование: Требует наличия иерархии классов, где подкласс наследует от суперкласса.
- Переопределение: Подкласс предоставляет свою собственную реализацию метода, который уже объявлен в суперклассе.
- Ссылка на суперкласс: Объект подкласса может быть присвоен ссылке типа суперкласса.
- Вызов метода: При вызове переопределенного метода через ссылку на суперкласс будет выполнена реализация из фактического объекта (подкласса).
Пример:
// Суперкласс
class Animal {
public void makeSound() {
System.out.println("Неизвестный звук");
}
}
// Подкласс
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Woof!");
}
}
// Подкласс
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow!");
}
}
// Использование полиморфизма
class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Ссылка на суперкласс указывает на объект подкласса
Animal myCat = new Cat();
myDog.makeSound(); // Вызывается метод из Dog
myCat.makeSound(); // Вызывается метод из Cat
}
}
Преимущества:
- Гибкость: Позволяет обрабатывать объекты разных подклассов единообразно через общую ссылку на суперкласс.
- Расширяемость: Легко добавлять новые подклассы без изменения существующего кода, который использует ссылку на суперкласс.
- Упрощение кода: Позволяет писать более обобщенный код.