Sobes.tech
Junior

Τι είναι η κληρονομικότητα και ο πολυμορφισμός στους τύπους δεδομένων αναφοράς;

sobes.tech AI

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

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

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

Παράδειγμα (Java):

// Βασική κλάση
class Animal {
    public void makeSound() {
        System.out.println("Το ζώο κάνει ήχο");
    }
}

// Υποκλάση
class Dog extends Animal {
    @Override // Υπερκαθορισμός της μεθόδου
    public void makeSound() {
        System.out.println("Γαβ!");
    }
}

// Υποκλάση
class Cat extends Animal {
    @Override // Υπερκαθορισμός της μεθόδου
    public void makeSound() {
        System.out.println("Μιάου!");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Αντικείμενο Dog, αλλά αναφορά τύπου Animal
        Animal myCat = new Cat(); // Αντικείμενο Cat, αλλά αναφορά τύπου Animal

        myDog.makeSound(); // Καλεί τη μέθοδο του Dog
        myCat.makeSound(); // Καλεί τη μέθοδο του Cat
    }
}

Σε αυτό το παράδειγμα:

  • Κληρονομικότητα: Οι κλάσεις Dog και Cat κληρονομούν από την Animal.
  • Πολυμορφισμός: Οι μεταβλητές myDog και myCat αναφέρονται σε αντικείμενα Dog και Cat αντίστοιχα, αν και έχουν τύπο Animal. Όταν καλείται η makeSound(), εκτελείται η μέθοδος του αντικειμένου, όχι του τύπου της αναφοράς.