Назад к вопросам
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() в зависимости от типа объекта
}
Преимущества полиморфизма:
- Повышает гибкость и расширяемость кода.
- Упрощает внесение изменений и добавление новой функциональности.
- Способствует повторному использованию кода.
- Делает код более читаемым и поддерживаемым.