Junior — Middle
Можеш ли да дадеш пример, илюстриращ различните видове полиморфизъм в обектно-ориентираното програмиране?
sobes.tech AI
Отговор от AI
В обектно-ориентираното програмиране полиморфизмът позволява обекти от различни класове да обработват извиквания на метод с едно и също име по различен начин.
1. Полиморфизъм при компилация (статичен полиморфизъм):
- Прекалено натоварване на методи: няколко метода с едно и също име, но различни параметри.
class Calculator {
func add(a: Int, b: Int) -> Int {
return a + b
}
func add(a: Double, b: Double) -> Double {
return a + b
}
}
2. Полиморфизъм при изпълнение (динамичен полиморфизъм):
- Презаписване на методи в подкласове.
class Animal {
func sound() {
print("Някакъв звук")
}
}
class Dog: Animal {
override func sound() {
print("Лаене")
}
}
class Cat: Animal {
override func sound() {
print("Мяу")
}
}
let animals: [Animal] = [Dog(), Cat()]
for animal in animals {
animal.sound() // Ще отпечата "Лаене" и "Мяу"
}
Така полиморфизмът позволява използването на единен интерфейс за работа с различни типове обекти.