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() // Θα εμφανίσει "Γαύγισμα" και "Μιαού"
}
Έτσι, ο πολυμορφισμός επιτρέπει τη χρήση μιας ενιαίας διεπαφής για εργασία με διαφορετικούς τύπους αντικειμένων.