Sobes.tech
Junior — Middle

Μπορεί να υλοποιηθεί πολλαπλή κληρονομιά στη γλώσσα Swift;

sobes.tech AI

Απάντηση από AI

Στη γλώσσα Swift, η πολλαπλή κληρονομιά των κλάσεων δεν υποστηρίζεται, δηλαδή μια κλάση μπορεί να κληρονομήσει μόνο από μια υπερκλάση.

Ωστόσο, η Swift υποστηρίζει πρωτόκολλα (protocols), που επιτρέπουν την υλοποίηση λειτουργικότητας παρόμοια με την πολλαπλή κληρονομιά, μέσω της υλοποίησης πολλών πρωτοκόλλων.

Παράδειγμα:

protocol Flyable {
    func fly()
}

protocol Swimmable {
    func swim()
}

class Animal {
    func eat() {
        print("Τρώει")
    }
}

class Duck: Animal, Flyable, Swimmable {
    func fly() {
        print("Πετάει")
    }
    
    func swim() {
        print("Κολυμπάει")
    }
}

let donald = Duck()
donald.eat()  // Τρώει
donald.fly()  // Πετάει
donald.swim() // Κολυμπάει

Έτσι, για την επέκταση της λειτουργικότητας, χρησιμοποιείται η κληρονομικότητα μιας κλάσης και η υλοποίηση πολλών πρωτοκόλλων.