Sobes.tech
Junior — Middle

Εξηγήστε τη διαφορά μεταξύ μιας μεθόδου που υλοποιείται με το ίδιο όνομα και υπογραφή σε μια κλάση και της υπερφόρτωσής της, και της επανακαθορισμού της μεθόδου σε κλάσεις που κληρονομούνται.

sobes.tech AI

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

Η υπερφόρτωση μεθόδου (overloading) συμβαίνει όταν σε μια ίδια κλάση δημιουργούνται πολλαπλές μέθοδοι με το ίδιο όνομα, αλλά διαφορετικές υπογραφές (διαφορετικά σύνολα παραμέτρων). Αυτό επιτρέπει την κλήση της μεθόδου με διαφορετικά επιχειρήματα, και ο μεταγλωττιστής επιλέγει την κατάλληλη επιλογή.

Η υπερκάλυψη μεθόδου (overriding) συμβαίνει σε μια κληρονομούμενη κλάση, όταν μια μέθοδος με την ίδια υπογραφή με αυτή της βασικής κλάσης υλοποιείται ξανά για να αλλάξει ή να επεκτείνει τη συμπεριφορά της βασικής μεθόδου.

Παράδειγμα σε Swift:

class Animal {
    func sound() {
        print("Κάποιος ήχος")
    }
}

class Dog: Animal {
    override func sound() { // υπερκάλυψη
        print("Γαύγισμα")
    }

    func sound(volume: Int) { // υπερφόρτωση
        print("Γαύγισμα σε όγκο \(volume)")
    }
}

Εδώ, το sound() στην κλάση Dog υπερκαλύπτει τη μέθοδο της βασικής κλάσης Animal, και το sound(volume:) είναι μια υπερφόρτωση της μεθόδου με διαφορετικό σύνολο παραμέτρων.