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
Last revision Both sides next revision
java:polymorphism [2017/03/03 13:51]
gthanos [Δυναμικός Πολυμορφισμός]
java:polymorphism [2020/02/24 04:36]
gthanos [Δυναμικός Πολυμορφισμός]
Line 1: Line 1:
 ======  Στατικός και Δυναμικός Πολυμορφισμός ====== ======  Στατικός και Δυναμικός Πολυμορφισμός ======
  
-===== Στατικός Πολυμορφισμός =====+===== Στατικός Πολυμορφισμός (a.k.a. Υπερφόρτωση Μεθόδων) =====
  
 Κατά την εισαγωγή [[java:class_methods#Υπερφόρτωση (overloading) των μεθόδων μίας κλάσης | στις μεθόδους της κλάσης]] είδαμε την δυνατότητα ορισμού σε μία κλάση μεθόδων με το ίδιο όνομα αλλά με διαφορετικό αριθμό ή/και τύπους παραμέτρων. Η δυνατότητα αυτή που μας δίνει η Java και ο Αντικειμενοστραφής Προγραμματισμός γενικότερα, ονομάζεται //method overloading// και οφείλεται στο γεγονός ότι μία μέθοδος δεν ορίζεται μόνο από το όνομα της αλλά και από το σύνολο των τυπικών παραμέτρων της. Τυπικές παράμετροι και όνομα αποτελούν την //υπογραφή// (signature) της κάθε μεθόδου. Κατά την εισαγωγή [[java:class_methods#Υπερφόρτωση (overloading) των μεθόδων μίας κλάσης | στις μεθόδους της κλάσης]] είδαμε την δυνατότητα ορισμού σε μία κλάση μεθόδων με το ίδιο όνομα αλλά με διαφορετικό αριθμό ή/και τύπους παραμέτρων. Η δυνατότητα αυτή που μας δίνει η Java και ο Αντικειμενοστραφής Προγραμματισμός γενικότερα, ονομάζεται //method overloading// και οφείλεται στο γεγονός ότι μία μέθοδος δεν ορίζεται μόνο από το όνομα της αλλά και από το σύνολο των τυπικών παραμέτρων της. Τυπικές παράμετροι και όνομα αποτελούν την //υπογραφή// (signature) της κάθε μεθόδου.
Line 70: Line 70:
 Στο παραπάνω παράδειγμα, το JVM γνωρίζει το είδος του αντικειμένου στο οποίο δείχνουν οι μεταβλητές ''a'', ''b'' και ''c'' ανεξάρτητα εάν η reference μεταβλητή είναι του τύπου της γονικής κλάσης ή της υποκλάσης. Η παραπάνω διάκριση είναι γνωστή ως δυναμικός πολυμορφισμός (//dynamic polymorphism//), διότι το ποια μέθοδος θα κληθεί αποφασίζεται κατά την εκτέλεση και όχι κατά την μεταγλώττιση. Στο παραπάνω παράδειγμα, το JVM γνωρίζει το είδος του αντικειμένου στο οποίο δείχνουν οι μεταβλητές ''a'', ''b'' και ''c'' ανεξάρτητα εάν η reference μεταβλητή είναι του τύπου της γονικής κλάσης ή της υποκλάσης. Η παραπάνω διάκριση είναι γνωστή ως δυναμικός πολυμορφισμός (//dynamic polymorphism//), διότι το ποια μέθοδος θα κληθεί αποφασίζεται κατά την εκτέλεση και όχι κατά την μεταγλώττιση.
  
-|Προηγούμενο: [[ :java:super_operator | Ο τελεστής super ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[ :java:hiding_static_methods | Καλώντας στατικές μεθόδους από την γονική κλάση και την υποκλάση ]]|+|Προηγούμενο: [[ :java:super_operator | Ο τελεστής super ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[ :java:abstract_classes Abstract Κλάσεις ]]|
java/polymorphism.txt · Last modified: 2020/03/27 13:18 by gthanos