====== Σχέσεις κληρονομικότητας φραγμένων παραμετρικών τύπων δεδομένων ====== ===Η συγκεκριμένη ενότητα είναι προαιρετική και μπορείτε να την παραλήψετε κατά την ανάγνωση της θεωρείας του μαθήματος.=== Όπως είδαμε οι τύποι ''List'' και ''List'' δεν διέπονται από καμία σχέση κληρονομικότητας. Ο κοινός πατέρας και τον δύο λιστών είναι η κλάση ''List'', όπως φαίνεται παρακάτω {{ :java:generics_inheritance2.png |}} Γενικότερα, σχέσεις κληρονομικότητας μεταξύ φραγμένων τύπων ισχύουν με κριτήρια κατά πόσο μπορούμε να αντικαταστήσουμε ένα τύπο δεδομένων με έναν άλλο τύπο δεδομένων. Δείτε τα παρακάτω παραδείγματα κληρονομικότητας List | v List | v List | v List Αντίστοιχα ισχύουν List | v List | v List | v List Ανάλογα ισχύουν και τα παρακάτω List List | και | ------------------------------------ ------------------------------------ | | | | v v v v List List List List ==== Εφαρμόζοντας σε κώδικα τα παραπάνω ==== Δοκιμάστε να μεταγλωττίσετε τα παρακάτω παραδείγματα κώδικα για να επιβεβαιώσετε τα παραπάνω. List numList = new ArrayList<>(); List objectList = numList; List intList = new ArrayList<>(); List numList = intList; List intList = new ArrayList<>(); List extendedIntList = intList; Ανάλογα List intList = new ArrayList<>(); List objectList = intList; List numList = new ArrayList<>(); List inList = numList; List numList = new ArrayList<>(); List extendedNumList = numList; Το παρακάτω σχήμα εξηγεί τις σχέσεις κληρονομικότητας που διέπουν (άνω και κάτω) φραγμένους τύπους δεδομένων για τον παραμετρικό τύπο δεδομένων της λίστας. {{ :java:generics_inheritance3.png |}} |Προηγούμενο: [[:java:generic_bounded_types | Φραγμένοι παραμετρικοί τύπων δεδομένων ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:collections_intro| Collections ]] |