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()  // Θα εμφανίσει "Γαύγισμα" και "Μιαού"
}

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