This shows you the differences between two versions of the page.
|
java:multiple_inheritance [2016/02/15 08:50] gthanos |
java:multiple_inheritance [2016/02/26 11:15] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Κληρονομικότητα πολλαπλών γονικών κλάσεων ====== | ||
| - | |||
| - | Στην εισαγωγή της κληρονομικότητας αναφέρθηκε ότι απαγορεύεται η κληρονομικότητα πολλαπλών γονικών κλάσεων. Σε αυτή τη παράγραφο θα εξηγήσουμε γιατί απαγορεύεται αυτού του τύπου η κληρονομικότητα. Ας υποθέσουμε ότι έχουμε την κλάση ''Animal'' και την κλάση ''Mammal'' οι οποίες ορίζονται ως εξής: | ||
| - | |||
| - | <code java> | ||
| - | public class Animal { | ||
| - | public String name; | ||
| - | | ||
| - | public class setName(name) { | ||
| - | this.name = name; | ||
| - | println("Animal's name is "+name); | ||
| - | } | ||
| - | } | ||
| - | </code> | ||
| - | |||
| - | <code java> | ||
| - | public class Mammal { | ||
| - | public String name; | ||
| - | | ||
| - | public class setName(name) { | ||
| - | this.name = name; | ||
| - | println("Mammal's name is "+name); | ||
| - | } | ||
| - | } | ||
| - | </code> | ||
| - | |||
| - | Ας υποθέσουμε τώρα ότι έχουμε και την κλάση ''Dog'' που κληρονομεί τις ''Animal'' και ''Mammal''. | ||
| - | |||
| - | <code java> | ||
| - | public class Dog extends Animal, Mammal { | ||
| - | |||
| - | } | ||
| - | </code> | ||
| - | |||
| - | |||
| - | Όταν ένα αντικείμενο της κλάσης ''Dog'' καλεί τη μέθοδο ''setName'' δεν είναι σαφές αν θα καλέσει την μέθοδο αυτή της κλάσης ''Animal'' ή της κλάσης ''Mammal''. Αυτού του είδους η ασάφεια αποφεύγεται στην Java περιορίζοντας τον μέγιστο αριθμό των γονικών κλάσεων σε μία. | ||
| - | |||
| - | |Προηγούμενο: [[ :java:inheritance | Κληρονομικότητα ]] | Επόμενο: [[ :java:super_operator | Ο τελεστής super]]| | ||