Βασική διαφορά – Υπερφόρτωση έναντι παράκαμψης στην Java
Ο Αντικειμενοστρεφής Προγραμματισμός (OOP) είναι ένα σημαντικό παράδειγμα στην ανάπτυξη λογισμικού. Είναι μια μεθοδολογία για το σχεδιασμό ενός προγράμματος χρησιμοποιώντας κλάσεις και αντικείμενα. Μια τάξη είναι ένα σχέδιο. Περιγράφει τι πρέπει να περιέχει το αντικείμενο. Καθορίζει τις ιδιότητες ή τις ιδιότητες και τις μεθόδους από τις οποίες πρέπει να αποτελείται το αντικείμενο. Επομένως, ένα αντικείμενο είναι ένα παράδειγμα μιας κλάσης. Αυτά τα αντικείμενα επικοινωνούν με άλλα αντικείμενα. Μια βασική έννοια του OOP είναι ο Πολυμορφισμός. Είναι η ικανότητα ενός αντικειμένου να συμπεριφέρεται με πολλούς τρόπους. Ο πολυμορφισμός κατηγοριοποιείται σε δύο ενότητες που είναι η υπερφόρτωση και η υπέρβαση. Αυτό το άρθρο εξετάζει τη διαφορά μεταξύ αυτών των δύο στην Java. Η βασική διαφορά μεταξύ υπερφόρτωσης και παράκαμψης στην Java είναι ότι η υπερφόρτωση είναι η δυνατότητα δημιουργίας πολλαπλών μεθόδων με το ίδιο όνομα με διαφορετικές υλοποιήσεις και η παράκαμψη είναι η παροχή μιας υλοποίησης για μια μέθοδο υποκλάσης που υπάρχει ήδη στην υπερκλάση.
Τι είναι η υπερφόρτωση στην Java;
Υπερφόρτωση είναι η δυνατότητα δημιουργίας πολλαπλών μεθόδων με το ίδιο όνομα με διαφορετικές υλοποιήσεις. Ανατρέξτε στον παρακάτω κώδικα Java.
Εικόνα 01: Πρόγραμμα Java που εξηγεί την υπερφόρτωση με διαφορετικό αριθμό ορισμάτων
Σύμφωνα με το παραπάνω πρόγραμμα, η κλάση Α περιέχει δύο μεθόδους με το ίδιο όνομα. Η πρώτη μέθοδος αθροίσματος έχει δύο παραμέτρους. Η δεύτερη μέθοδος αθροίσματος έχει τρεις παραμέτρους. Κατά τη δημιουργία ενός αντικειμένου τύπου A και την κλήση του sum(2, 3), θα καλέσει τη μέθοδο sum με δύο παραμέτρους που είναι sum(int a, int b) και επιστρέφει 5. Όταν δημιουργείτε ένα αντικείμενο τύπου A και καλείτε το sum(2, 3, 4), θα καλέσει την άλλη μέθοδο αθροίσματος με τρεις παραμέτρους που είναι το άθροισμα (int a, int b, int c) και επιστρέφει 9.
Το όνομα της μεθόδου είναι το ίδιο, αλλά ο αριθμός των παραμέτρων είναι διαφορετικός. Μπορεί να παρατηρηθεί ότι το ίδιο αντικείμενο συμπεριφέρεται διαφορετικά. Αυτή η έννοια είναι γνωστή ως υπερφόρτωση. Αναφέρεται επίσης ως Static Binding ή Compiles Time Polymorphism.
Μπορεί επίσης να υπερφορτωθεί με διαφορετικούς τύπους δεδομένων. Ανατρέξτε στον παρακάτω κώδικα Java.
Εικόνα 02: Πρόγραμμα Java που εξηγεί την υπερφόρτωση με διαφορετικό αριθμό ορισμάτων
Σύμφωνα με το παραπάνω πρόγραμμα, η κλάση Α αποτελείται από δύο μεθόδους με το ίδιο όνομα. Η μέθοδος sum(int a, int b) λαμβάνει δύο ακέραιες τιμές. Το άθροισμα (double a double b) λαμβάνει δύο διπλές τιμές. Όταν δημιουργείτε το αντικείμενο τύπου A και καλείτε το sum(2, 3), θα καλεί το sum(int a, int b) και θα επιστρέψει την τιμή 5. Όταν καλεί το sum(3.4, 5.6), θα καλεί το sum(double a double β) και επιστρέψτε την τιμή 9.0. Σε αυτό το παράδειγμα, οι μέθοδοι έχουν το ίδιο όνομα, αλλά διαφορετικό τύπο μεταβλητών. Αυτό είναι επίσης υπερφόρτωση.
Τι είναι το Overriding στην Java;
Στην Java, είναι δυνατή η δημιουργία υποκλάσεων με ήδη υπάρχουσες κλάσεις. Αντί να δημιουργηθεί η νέα κλάση από την αρχή, είναι δυνατό να χρησιμοποιηθούν οι ιδιότητες και οι μέθοδοι της ήδη υπάρχουσας κλάσης. Η υπάρχουσα κλάση είναι η υπερκλάση και η παραγόμενη κλάση είναι η υποκλάση. Όταν η υποκλάση παρέχει μια υλοποίηση για μια μέθοδο, η οποία βρίσκεται ήδη στην υπερκλάση, είναι γνωστή ως παράκαμψη. Ανατρέξτε στο παρακάτω πρόγραμμα Java.
Εικόνα 03: Πρόγραμμα Java για παράκαμψη
Σύμφωνα με το παραπάνω πρόγραμμα, η Κλάση Α έχει μια μέθοδο display(). Η κλάση Β εκτείνεται από την κλάση Α, επομένως οι ιδιότητες και οι μέθοδοι της κλάσης Α είναι προσβάσιμες από την κλάση Β. Η κλάση Β έχει μέθοδο display() με συγκεκριμένη υλοποίηση. Κατά τη δημιουργία ενός αντικειμένου τύπου A και την κλήση της μεθόδου εμφάνισης, θα δώσει την έξοδο B. Παρόλο που η κλάση Α έχει μια μέθοδο εμφάνισης, αυτή παρακάμπτεται ως μέθοδος εμφάνισης κατηγορίας Β. Η υποκλάση υλοποιεί μια μέθοδο που υπάρχει ήδη στην υπερκλάση.
Αυτή η έννοια είναι ένας τύπος πολυμορφισμού και είναι γνωστή ως υπερισχύουσα. Ονομάζεται επίσης ως Late Binding, Dynamic Binding, Runtime Polymorphism.
Ποιες είναι οι ομοιότητες μεταξύ υπερφόρτωσης και παράκαμψης στην Java;
- Και οι δύο είναι τύποι πολυμορφισμού.
- Στην υπερφόρτωση και την παράκαμψη, οι μέθοδοι έχουν το ίδιο όνομα.
Ποια είναι η διαφορά μεταξύ υπερφόρτωσης και παράκαμψης στην Java;
Υπερφόρτωση έναντι παράκαμψης σε Java |
|
Η υπερφόρτωση σε Java είναι η δυνατότητα δημιουργίας πολλαπλών μεθόδων με το ίδιο όνομα με διαφορετικές υλοποιήσεις. | Η παράκαμψη στην Java παρέχει μια συγκεκριμένη υλοποίηση σε μέθοδο υποκλάσης για μια μέθοδο που υπάρχει ήδη στην υπερκλάση. |
Παράμετροι | |
Στην υπερφόρτωση, οι μέθοδοι έχουν το ίδιο όνομα αλλά διαφορετικό αριθμό παραμέτρων ή διαφορετικό τύπο παραμέτρων. | Σε παράκαμψη, οι μέθοδοι έχουν το ίδιο όνομα και οι παράμετροι πρέπει να είναι ίδιες. |
Θέματα | |
Υπερφόρτωση παρουσιάζεται εντός της τάξης. | Η παράκαμψη εμφανίζεται εντός των δύο κλάσεων που έχουν σχέση κληρονομικότητας. |
Συνώνυμα | |
Η υπερφόρτωση ονομάζεται πολυμορφισμός μεταγλωττισμένου χρόνου. | Η παράκαμψη ονομάζεται πολυμορφισμός χρόνου εκτέλεσης. |
Σύνοψη – Υπερφόρτωση έναντι παράκαμψης σε Java
Ο πολυμορφισμός είναι μια σημαντική έννοια στον Αντικειμενοστραφή Προγραμματισμό. Παρέχει τη δυνατότητα σε ένα αντικείμενο να συμπεριφέρεται με πολλούς τρόπους. Αυτό μπορεί να είναι είτε υπερφόρτωση είτε παράκαμψη. Η υπερφόρτωση είναι ο πολυμορφισμός χρόνου μεταγλώττισης και ο πολυμορφισμός χρόνου εκτέλεσης. Είναι χρήσιμα στην ανάπτυξη εφαρμογών λογισμικού. Η διαφορά μεταξύ παράκαμψης και υπερφόρτωσης είναι ότι η υπερφόρτωση είναι η δυνατότητα δημιουργίας πολλαπλών μεθόδων με το ίδιο όνομα με διαφορετικές υλοποιήσεις και η παράκαμψη παρέχει μια συγκεκριμένη υλοποίηση σε μέθοδο υποκλάσης για μια μέθοδο που υπάρχει ήδη στην υπερκλάση. Είναι δυνατή η εφαρμογή τόσο της υπερφόρτωσης όσο και της παράκαμψης στην Java.
Λήψη του PDF Overloading vs Overriding σε Java
Μπορείτε να κατεβάσετε την έκδοση PDF αυτού του άρθρου και να τη χρησιμοποιήσετε για σκοπούς εκτός σύνδεσης σύμφωνα με τη σημείωση παραπομπής. Κάντε λήψη της έκδοσης PDF εδώ Διαφορά μεταξύ υπερφόρτωσης και παράκαμψης στην Java