Η μέθοδος υπερφόρτωσης και παράκαμψης είναι οι δύο τρόποι με τους οποίους η Java επιδεικνύει πολυμορφισμό. Ο πολυμορφισμός προέρχεται από έναν συνδυασμό δύο ελληνικών λέξεων: «πολυ» που σημαίνει πολλά και «μορφ» που σημαίνει μορφή. Επομένως, ο πολυμορφισμός επιτρέπει στις μεθόδους να λαμβάνουν πολλές μορφές.
Ακολουθήστε αυτόν τον οδηγό για να μάθετε πώς να υπερφορτώσετε ή να παρακάμψετε μεθόδους στην Java.
Τι είναι η μέθοδος υπερφόρτωσης;
Η "μέθοδος υπερφόρτωσης" αναφέρεται στον ορισμό διαφορετικών μεθόδων σε μια τάξη με το ίδιο όνομα. Οι μέθοδοι πρέπει να έχουν διαφορετικές υπογραφές. Μια υπογραφή μεθόδου είναι ο συνδυασμός του ονόματος μιας μεθόδου και μιας λίστας παραμέτρων. Δεν περιλαμβάνει τον τύπο επιστροφής.
Ο μεταγλωττιστής γνωρίζει ποια μέθοδο θα χρησιμοποιήσει ελέγχοντας τον τύπο, τον αριθμό των παραμέτρων και τη σειρά με την οποία τοποθετούνται.
Σχετιζομαι με: Εξερεύνηση κληρονομικότητας στη γλώσσα προγραμματισμού Java
Η μέθοδος υπερφόρτωσης δείχνει πολυμορφισμό μεταγλώττισης. Ο πολυμορφισμός χρόνου μεταγλώττισης σημαίνει ότι ο μεταγλωττιστής Java συνδέει ένα αντικείμενο με τη λειτουργικότητά του κατά το χρόνο εκτέλεσης. Ο μεταγλωττιστής ελέγχει τις υπογραφές μεθόδου για να το επιτύχει.
Αυτός ο τύπος πολυμορφισμού είναι επίσης γνωστός ως στατικός ή πρώιμος δεσμός.
Δείτε το παράδειγμα της μεθόδου υπερφόρτωσης παρακάτω:
αριθμητική τάξης {
int cube (int x) {
επιστροφή x * x * x;
}
διπλός κύβος (διπλός x) {
επιστροφή x * x * x;
}
κύβος επίπλευσης (float x) {
επιστροφή x * x * x;
}
Δημόσιο στατικό κενό (String [] args) {
Αριθμητική myMultiplication = νέα αριθμητική ();
System.out.println ("Ο κύβος του 5 είναι" + myMultiplication.cube (5));
System.out.println ("Ο κύβος του 5.0 είναι" + myMultiplication.cube (5.0));
System.out.println ("Ο κύβος του 0,5 είναι" + myMultiplication.cube (0,5));
}
}
Παραγωγή:
Ο κύβος του 5 είναι 125
Ο κύβος του 5.0 είναι 125.0
Ο κύβος 0,5 είναι 0,125
Ο παραπάνω κώδικας δείχνει πώς μπορείτε να πάρετε έναν κύβο διαφορετικών τύπων (int, διπλό, φλοτέρ) χρησιμοποιώντας την ίδια μέθοδο.
Γενικά, η μέθοδος υπερφόρτωσης χρησιμοποιείται για τον καθορισμό παρόμοιων μεθόδων με διαφορετικούς τύπους παραμέτρων.
Τι είναι η μέθοδος παράκαμψης;
Αυτό αναφέρεται σε διαφορετική εφαρμογή μιας μεθόδου σε μια υποκατηγορία. Η μέθοδος πρέπει να έχει ήδη καθοριστεί στη γονική τάξη.
Η παράκαμψη μέθοδος (δηλ. Αυτή στην υποκατηγορία) πρέπει να έχει την ίδια υπογραφή μεθόδου με εκείνη του superclass. Ο τύπος επιστροφής της μεθόδου παράκαμψης μπορεί να είναι ο ίδιος ή ένας δευτερεύων τύπος με αυτόν του superclass
Η παράκαμψη χρησιμοποιείται γενικά για να συμπεριλάβει μια συγκεκριμένη εφαρμογή της συμπεριφοράς ενός αντικειμένου στην υποκατηγορία.
λογαριασμός τάξης {
δημόσιο άκυρο μήνυμα () {
System.out.println ("
Σας ευχαριστούμε που ανοίξατε έναν λογαριασμό μαζί μας! ");
}
δημόσιος στατικός κενός κενός (String args []) {
Λογαριασμός myAccount = νέος λογαριασμός ();
Εξοικονόμηση mySavings = νέα Εξοικονόμηση ();
FixedDeposit myFixedDepo = νέο FixedDeposit ();
myAccount.message ();
mySavings.message ();
myFixedDepo.message ();
}
}
Το Class Savings επεκτείνει το λογαριασμό {
δημόσιο άκυρο μήνυμα () {
System.out.println ("
Σας ευχαριστούμε που ανοίξατε έναν λογαριασμό ταμιευτηρίου μαζί μας! ");
}
}
Η κλάση FixedDeposit επεκτείνει τον λογαριασμό {
δημόσιο άκυρο μήνυμα () {
System.out.println ("
Σας ευχαριστούμε που ανοίξατε έναν λογαριασμό πάγιας κατάθεσης! ");
}
}
Παραγωγή:
Σας ευχαριστούμε που ανοίξατε έναν λογαριασμό μαζί μας!
Σας ευχαριστούμε που ανοίξατε έναν λογαριασμό ταμιευτηρίου μαζί μας!
Σας ευχαριστούμε που ανοίξατε έναν λογαριασμό Σταθερής Κατάθεσης μαζί μας!
Το παραπάνω παράδειγμα δείχνει πώς η μέθοδος μήνυμα() παρακάμπτεται στις υποκατηγορίες Οικονομίες και Προθεσμιακή κατάθεση. Θα εμφανίζονται διαφορετικά μηνύματα για κατόχους τραπεζικών λογαριασμών με λογαριασμό Ταμιευτηρίου και για άτομα με λογαριασμό Σταθερής Κατάθεσης.
Σχετιζομαι με: Τι πρέπει να ξέρετε για τη χρήση συμβολοσειρών στην Java
Αξίζει επίσης να σημειωθεί ότι η παράκαμψη μεθόδου δείχνει πολυμορφισμό χρόνου εκτέλεσης ή δυναμική αποστολή μεθόδου. Αυτό σημαίνει ότι η μέθοδος που καλείται επιλύεται κατά το χρόνο εκτέλεσης και όχι κατά τη σύνταξη.
Για να αποφύγετε την παράκαμψη μιας μεθόδου, χρησιμοποιήστε τη λέξη-κλειδί τελικός.
τελικό άκυρο μήνυμα () {
System.out.println ("
Σας ευχαριστούμε που ανοίξατε έναν λογαριασμό μαζί μας! ");
}
Όταν μια υποκατηγορία προσπαθεί να την παρακάμψει, θα εμφανιστεί ένα σφάλμα συλλογής.
Στην ιδανική περίπτωση, όλες οι μέθοδοι που απαιτούνται μέσα σε έναν κατασκευαστή πρέπει να είναι τελικός. Αυτό γίνεται για να αποφευχθούν τυχόν ακούσιες αλλαγές που ενδέχεται να προκληθούν από τις υποκατηγορίες.
Μερικές φορές, ίσως χρειαστεί να αποκτήσετε πρόσβαση σε μια παράκαμψη μέθοδο μέσα στην παράκαμψη μέθοδο. Μπορείτε να χρησιμοποιήσετε τη λέξη-κλειδί σούπερ ακολουθούμενο από τον τελεστή κουκκίδων (.) και το όνομα της μεθόδου σε μια τέτοια περίπτωση.
Σκεφτείτε το superclass Ζώο.
τάξη ζώων {
δημόσια άκυρη κίνηση () {
System.out.println ("
Μπορώ να κινηθώ. ");
}
}
Παρακάτω είναι μια υποκατηγορία, που ονομάζεται Ψάρι, αυτό παρακάμπτει κίνηση():
η κατηγορία Fish επεκτείνει το ζώο {
δημόσια άκυρη κίνηση () {
System.out.println ("
Μπορώ να κολυμπήσω.");
super.move ();
}
δημόσιος στατικός κενός κενός (String args []) {
Ψάρια Τιλάπια = νέο ψάρι ();
Tilapia.move ();
}
}
Παραγωγή:
Μπορώ να κολυμπήσω.
Μπορώ να κινηθώ.
Κατά την παράκαμψη μιας μεθόδου, πρέπει επίσης να λάβετε υπόψη σας τον τροποποιητή πρόσβασης που χρησιμοποιείται. Ο τροποποιητής στην υποκατηγορία θα πρέπει να έχει το ίδιο επίπεδο ορατότητας ή υψηλότερο από αυτό της βασικής κατηγορίας. Για παράδειγμα, εάν η μέθοδος στην κατηγορία βάσης ορίζεται ως προστατευμένο, τότε η μέθοδος παράκαμψης μπορεί να είναι είτε προστατευμένο ή δημόσιο.
Απλός κώδικας με πολυμορφισμό
Η μέθοδος παράκαμψης και υπερφόρτωσης είναι σημαντική για την απλοποίηση κώδικα και ο απλός κώδικας είναι καλή πρακτική.
Γιατί; Φανταστείτε μια σύνθετη βάση κώδικα με περισσότερα εισερχόμενα από ό, τι το Grand Central Station. Τώρα φανταστείτε ότι ένα καταστροφικό σφάλμα αρχίζει να καταστρέφει τη σκληρή σας δουλειά μπροστά στα μάτια σας. Πρέπει να απομονώσετε την πηγή της λοίμωξης και πρέπει να το κάνετε γρήγορα.
Καλή τύχη, δεν απλοποιήσατε τον κωδικό σας... Τώρα πρόκειται να πάρετε ένα πραγματικό μάθημα στην κρυπτογραφία. Χρησιμοποιώντας αποτελεσματικές δομές δεδομένων και κάνετε ό, τι μπορείτε για να συντομεύσετε τον κώδικα (όπως να έχετε κατά νου το DRY) είναι η καλύτερη άμυνα σας ενάντια σε μια κατάσταση όπως αυτή.
Στη συνέχεια, στη λίστα εκμάθησης Java θα πρέπει να λειτουργεί με πίνακες. Είναι σημαντικές δομές δεδομένων που χρησιμοποιούνται για την αποθήκευση παρτίδων σημείων δεδομένων.
Μαθαίνετε Java; Αφήστε τους πίνακες να χειρίζονται τα δεδομένα σας με ευκολία.
Διαβάστε Επόμενο
- Προγραμματισμός
- Ιάβα
- Εκμάθηση κωδικοποίησης

Ο Jerome είναι συγγραφέας προσωπικού στο MakeUseOf. Καλύπτει άρθρα σχετικά με τον προγραμματισμό και το Linux. Είναι επίσης λάτρης της κρυπτογράφησης και παρακολουθεί πάντα τη βιομηχανία κρυπτογράφησης.
Εγγραφείτε στο Newsletter μας
Εγγραφείτε στο ενημερωτικό δελτίο μας για τεχνικές συμβουλές, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!
Ένα ακόμη βήμα…!
Επιβεβαιώστε τη διεύθυνση email σας στο email που μόλις σας στείλαμε.