Назад к вопросам
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
    }
}

Преимущества:

  • Гибкость: Позволяет обрабатывать объекты разных подклассов единообразно через общую ссылку на суперкласс.
  • Расширяемость: Легко добавлять новые подклассы без изменения существующего кода, который использует ссылку на суперкласс.
  • Упрощение кода: Позволяет писать более обобщенный код.