This shows you the differences between two versions of the page.
Next revision Both sides next revision | |||
java:generics_inheritance [2015/03/15 21:18] gthanos created |
java:generics_inheritance [2015/03/15 21:42] gthanos |
||
---|---|---|---|
Line 14: | Line 14: | ||
</code> | </code> | ||
Ο παραπάνω κώδικας είναι σωστός στις γραμμές 3-5 διότι οι κλάσεις ''Integer'' και ''Double'' είναι υποκλάσεις της κλάσης ''Number''. Δεν ισχύει όμως το ίδιο για την γραμμή 8 καθώς η κλάση ''Box<Double>'' **__δεν είναι__** υποκλάση της κλάσης ''Box<Number>'', όπως δείχνει το παρακάτω σχήμα. | Ο παραπάνω κώδικας είναι σωστός στις γραμμές 3-5 διότι οι κλάσεις ''Integer'' και ''Double'' είναι υποκλάσεις της κλάσης ''Number''. Δεν ισχύει όμως το ίδιο για την γραμμή 8 καθώς η κλάση ''Box<Double>'' **__δεν είναι__** υποκλάση της κλάσης ''Box<Number>'', όπως δείχνει το παρακάτω σχήμα. | ||
- | {{ :java:generics_inheritance1.png?500 }} | + | {{ :java:generics_inheritance1.png?300 }} |
Μπορείτε να υλοποιήσετε παραμετρικούς τύπους δεδομένων που κληρονομούν από άλλους παραμετρικούς τύπους δεδομένων. Για παράδειγμα από την standard βιβλιοθήκη της Java μπορείτε να δείτε ότι ο τύπος ''ArrayList<E>'' υλοποιεί το interface ''List<E>''. Το interface ''List<E>'' με την σειρά του επεκτείνει το interface ''Collection<E>''. Έτσι μπορεί να οριστεί η παρακάτω ιεραρχία | Μπορείτε να υλοποιήσετε παραμετρικούς τύπους δεδομένων που κληρονομούν από άλλους παραμετρικούς τύπους δεδομένων. Για παράδειγμα από την standard βιβλιοθήκη της Java μπορείτε να δείτε ότι ο τύπος ''ArrayList<E>'' υλοποιεί το interface ''List<E>''. Το interface ''List<E>'' με την σειρά του επεκτείνει το interface ''Collection<E>''. Έτσι μπορεί να οριστεί η παρακάτω ιεραρχία |