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(), εκτελείται η μέθοδος του αντικειμένου, όχι του τύπου της αναφοράς.