Назад к вопросам
Junior
128
questionbank

Что такое полиморфизм?

Sobes Copilot

Получайте ответы в реальном времени

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

sobes.tech AI

Полиморфизм — это принцип объектно-ориентированного программирования, позволяющий объектам разных классов реагировать на одно и то же сообщение (вызов метода) по-разному, в зависимости от их фактического типа.

Разновидности полиморфизма:

  • Ad-hoc (специальный) полиморфизм:
    • Перегрузка (Overloading): Методы с одинаковым именем, но разной сигнатурой (количество или типы параметров) в одном классе.
    • Приведение типов (Coercion): Неявное или явное преобразование типов данных.
  • Parametric (параметрический) полиморфизм: Использование родовых (generics) типов, позволяющее писать код, работающий с разными типами данных без потери типобезопасности.
  • Subtype (полиморфизм подтипов): Возможность использовать объект подкласса там, где ожидается объект суперкласса.

Пример полиморфизма подтипов в Swift:

// Базовый класс
class Vehicle {
    func startEngine() {
        print("Двигатель запущен.")
    }
}

// Подкласс 1
class Car: Vehicle {
    override func startEngine() {
        print("Рум-рум!")
    }
}

// Подкласс 2
class Motorcycle: Vehicle {
    override func startEngine() {
        print("Врррум!")
    }
}

// Использование полиморфизма
let vehicles: [Vehicle] = [Car(), Motorcycle(), Vehicle()]

for vehicle in vehicles {
    vehicle.startEngine() // Вызывает разную реализацию startEngine() в зависимости от типа объекта
}

Преимущества полиморфизма:

  • Повышает гибкость и расширяемость кода.
  • Упрощает внесение изменений и добавление новой функциональности.
  • Способствует повторному использованию кода.
  • Делает код более читаемым и поддерживаемым.