Sobes.tech
Junior — Middle

Можеш ли да изброиш различните типове полиморфизъм в обектно-ориентираното програмиране?

sobes.tech AI

Отговор от AI

В обектно-ориентираното програмиране (ООП) се разграничават няколко основни типа полиморфизъм:

  1. Полиморфизъм на подтип (Subtype Polymorphism) — най-разпространеният тип, реализиран чрез наследяване и презаписване на методи. Позволява използването на обекти от подкласове вместо обекти от базовия клас.

  2. Параметричен полиморфизъм (Parametric Polymorphism) — реализира се чрез обобщени типове (generics), когато функции или класове работят с всякакви типове данни.

  3. Ad-hoc полиморфизъм (Ad-hoc Polymorphism) — включва презареждане на функции и оператори, когато една функция има няколко реализации с различни типове параметри.

  4. Полиморфизъм в време на изпълнение (Runtime Polymorphism) — достига се чрез виртуални методи и динамично свързване, когато извикването на метода се определя по време на изпълнение.

Пример за полиморфизъм на подтипове на Swift (iOS):

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()  // Вика на метода зависи от реалния тип на обекта
}