Sobes.tech
Junior — Middle

Πώς διακρίνουμε μια υπερφόρτωση μεθόδου από μια υπερκάλυψη στην αντικειμενοστραφή προγραμματισμό;

sobes.tech AI

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

Η υπερφόρτωση μεθόδου (overloading) και η υπερκάλυψη μεθόδου (overriding) είναι διαφορετικές έννοιες στον αντικειμενοστραφή προγραμματισμό:

  • Υπερφόρτωση μεθόδου: η ύπαρξη πολλαπλών μεθόδων με το ίδιο όνομα σε μια κλάση, αλλά με διαφορετικές παραμέτρους (τύπο, αριθμό). Αυτό επιτρέπει την κλήση της μεθόδου με διαφορετικά επιχειρήματα.

  • Υπερκάλυψη μεθόδου: όταν μια υποκλάση παρέχει τη δική της υλοποίηση μιας μεθόδου που έχει ήδη οριστεί στην βασική κλάση με την ίδια υπογραφή (όνομα και παραμέτρους). Αυτό επιτρέπει την αλλαγή της συμπεριφοράς της μεθόδου για την υποκλάση.

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

class Animal {
    void sound() {
        System.out.println("Κάποιος ήχος");
    }

    void sound(String mood) { // υπερφόρτωση
        System.out.println("Ήχος όταν " + mood);
    }
}

class Dog extends Animal {
    @Override
    void sound() { // υπερκάλυψη
        System.out.println("Γαύγισμα");
    }
}

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