java:polymorphism

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
java:polymorphism [2016/02/15 09:04]
gthanos [Στατικός Πολυμορφισμός]
java:polymorphism [2017/02/16 14:20] (current)
gthanos
Line 62: Line 62:
 </​code>​ </​code>​
  
-Παρατηρούμε ότι η κλήση της μεθόδου ''​signature''​ από δύο μεταλητές τύπου ''​Animal''​ που η πρώτη (''​a''​) δείχνει σε αντικείμενο της γονικής κλάσης (''​Animal''​) και η δεύτερη (''​b''​) σε αντικείμενο της υποκλάσης (''​Dog''​) έχει ως αποτέλεσμα την κλήση διαφορετικών μεθόδων. Η απόφαση για το ποια μέθοδος θα κληθεί επαφίεται στο JVM κατά την εκτέλεση του προγράμματος. Το JVM αντιλαμβάνεται ​το είδος του αντικειμένου στο οποίο δείχνει ​η μεταβλητή ''​b'',​ ανεξάρτητα ​εάν η reference ​μεταβλητή ​είναι του τύπου της γονικής κλάσης ή της υποκλάσης αυτής. Η παραπάνω διάκριση είναι γνωστή και ως δυναμικός πολυμορφισμός (//dynamic polymorphism//​).+Παρατηρούμε ότι η κλήση της μεθόδου ''​signature''​ από δύο μεταλητές τύπου ''​Animal''​ που η πρώτη (''​a''​) δείχνει σε αντικείμενο της γονικής κλάσης (''​Animal''​) και η δεύτερη (''​b''​) σε αντικείμενο της υποκλάσης (''​Dog''​) έχει ως αποτέλεσμα την κλήση διαφορετικών μεθόδων. Η απόφαση για το ποια μέθοδος θα κληθεί ​δεν μπορεί να αποφασιστεί από ​τον compiler. Το JVM καλείται να αποφασίσει ​κατά την εκτέλεση του προγράμματοςανάλογα με το είδος του αντικειμένου στο οποίο ​τελικά ​δείχνει ​κάθε μεταβλητή. ​
  
-|Προηγούμενο: [[ :​java:​super_operator | Ο τελεστής super ]] | Επόμενο: [[ :​java:​hiding_static_methods | Καλώντας στατικές μεθόδους από την γονική κλάση και ​την υποκλάση ]]|+Στο παραπάνω παράδειγμα, το JVM αντιλαμβάνεται το είδος ​του αντικειμένου ​στο οποίο δείχνουν οι μεταβλητές ''​a'',​ ''​b''​ ανεξάρτητα εάν η reference μεταβλητή είναι του τύπου της γονικής κλάσης ή της υποκλάσης. Η παραπάνω διάκριση είναι γνωστή και ως δυναμικός ​πολυμορφισμός (//dynamic polymorphism//​),​ καθώς το ποια μέθοδος θα κληθεί τελικά επαφίεται ​στο JVM και όχι στον compiler. 
 + 
 +|Προηγούμενο:​ [[ :​java:​object_class | Η κλάση Object ]] | [[ :toc | Περιεχόμενα ]]  | Επόμενο:​ [[ :​java:​dynamic_polymorphism_example | Παράδειγμα δυναμικού πολυμορφισμού ​]]|
java/polymorphism.1455527090.txt.gz · Last modified: 2016/02/26 11:15 (external edit)