Sobes.tech
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()  // Ще отпечата "Лаене" и "Мяу"
}

Така полиморфизмът позволява използването на единен интерфейс за работа с различни типове обекти.