Sobes.tech
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.