Junior — Middle
Czy możesz podać przykład ilustrujący różne rodzaje polimorfizmu w programowaniu obiektowym?
sobes.tech AI
Odpowiedź od AI
W programowaniu obiektowym polimorfizm pozwala obiektom różnych klas na obsługę wywołań metod o tej samej nazwie w różny sposób.
1. Polimorfizm czasu kompilacji (polimorfizm statyczny):
- Przeciążanie metod — kilka metod o tej samej nazwie, ale różnych parametrach.
class Calculator {
func add(a: Int, b: Int) -> Int {
return a + b
}
func add(a: Double, b: Double) -> Double {
return a + b
}
}
2. Polimorfizm czasu wykonania (polimorfizm dynamiczny):
- Nadpisywanie metod w podklasach.
class Animal {
func sound() {
print("Jakiś dźwięk")
}
}
class Dog: Animal {
override func sound() {
print("Hau")
}
}
class Cat: Animal {
override func sound() {
print("Miau")
}
}
let animals: [Animal] = [Dog(), Cat()]
for animal in animals {
animal.sound() // Wypisze "Hau" i "Miau"
}
W ten sposób polimorfizm pozwala na użycie jednej interfejsu do pracy z różnymi typami obiektów.