java:generic_bounded_types

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
java:generic_bounded_types [2015/03/15 21:08]
gthanos created
java:generic_bounded_types [2015/03/15 21:16]
gthanos
Line 13: Line 13:
 box.boxTest(doubleBox);​ // μπορούμε να γράψουμε?​ box.boxTest(doubleBox);​ // μπορούμε να γράψουμε?​
 </​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|}}+{{  :​java:​generics_inheritance1.png?​500  ​}}  
 + 
 +Μπορείτε να υλοποιήσετε παραμετρικούς τύπους δεδομένων που κληρονομούν από άλλους παραμετρικούς τύπους δεδομένων. Για παράδειγμα από την standard βιβλιοθήκη της Java μπορείτε να δείτε ότι ο τύπος ''​ArrayList<​E>''​ υλοποιεί το interface ''​List<​E>''​. Το interface ''​List<​E>''​ με την σειρά του επεκτείνει το interface ''​Collection<​E>''​. Έτσι μπορεί να οριστεί η παρακάτω ιεραρχία 
 +<​code>​ 
 +  Collection<​E> ​                          ​Collection<​String>​ 
 +      |                                          | 
 +      v                                          v 
 +    List<​E> ​              ​π.χ. ​             List<​String>​  
 +      |                                          | 
 +      v                                          v 
 +  ArrayList<​E> ​                             ArrayList<​String>​ 
 +</​code>​
java/generic_bounded_types.txt · Last modified: 2016/02/26 11:15 (external edit)