Πολυμορφισμός στην Java: Πώς να υπερφορτώσετε ή να παρακάμψετε μεθόδους

Πολυμορφισμός στην Java: Πώς να υπερφορτώσετε ή να παρακάμψετε μεθόδους

Η υπερφόρτωση της μεθόδου και η υπέρβαση είναι οι δύο τρόποι με τους οποίους η Java επιδεικνύει πολυμορφισμό. Ο πολυμορφισμός προέρχεται από συνδυασμό δύο ελληνικών λέξεων: «πολυ» που σημαίνει πολλές και «μορφ» που σημαίνει μορφή. Επομένως, ο πολυμορφισμός επιτρέπει στις μεθόδους να λάβουν πολλές μορφές.





Ακολουθήστε αυτόν τον οδηγό για να μάθετε πώς να υπερφορτώνετε ή να παρακάμπτετε μεθόδους στην Java.





Τι είναι η υπερφόρτωση της μεθόδου;

Η «υπερφόρτωση μεθόδων» αναφέρεται στον καθορισμό διαφορετικών μεθόδων σε μια κλάση με το ίδιο όνομα. Οι μέθοδοι πρέπει να έχουν διαφορετικές υπογραφές. Η υπογραφή μεθόδου είναι ο συνδυασμός ονόματος και λίστας παραμέτρων μιας μεθόδου. Δεν περιλαμβάνει τον τύπο επιστροφής.





Ο μεταγλωττιστής γνωρίζει ποια μέθοδο θα χρησιμοποιήσει ελέγχοντας τον τύπο, τον αριθμό των παραμέτρων και τη σειρά στην οποία τοποθετούνται.

Σχετίζεται με: Εξερευνώντας την κληρονομικότητα στη γλώσσα προγραμματισμού Java



Η υπερφόρτωση της μεθόδου επιδεικνύει πολυμορφισμό χρόνου μεταγλώττισης. Ο πολυμορφισμός χρόνου μεταγλώττισης σημαίνει ότι ο μεταγλωττιστής Java συνδέει ένα αντικείμενο με τη λειτουργικότητά του κατά τη διάρκεια του χρόνου εκτέλεσης. Ο μεταγλωττιστής ελέγχει τις υπογραφές της μεθόδου για να το πετύχει αυτό.

Αυτός ο τύπος πολυμορφισμού είναι επίσης γνωστός ως στατική ή πρώιμη σύνδεση.





Δείτε το παράδειγμα υπερφόρτωσης της μεθόδου παρακάτω:

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

Παραγωγή:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 0.125

Ο παραπάνω κώδικας δείχνει πώς μπορείτε να πάρετε έναν κύβο διαφορετικών τύπων ( int , διπλό , φλοτέρ ) χρησιμοποιώντας την ίδια μέθοδο.

Γενικά, η υπερφόρτωση μεθόδων χρησιμοποιείται για τον καθορισμό παρόμοιων μεθόδων με διαφορετικούς τύπους παραμέτρων.

Τι είναι η υπέρβαση της μεθόδου;

Αυτό αναφέρεται σε διαφορετική εφαρμογή μιας μεθόδου σε μια υποκλάση. Η μέθοδος πρέπει να έχει ήδη οριστεί στη γονική τάξη.

Η κυρίαρχη μέθοδος (δηλαδή αυτή της υποκλάσης) πρέπει να έχει την ίδια υπογραφή μεθόδου με αυτήν της υπερκλάσης. Ο τύπος επιστροφής της κύριας μεθόδου μπορεί να είναι ο ίδιος ή ένας υποτύπος εκείνου της υπερκλάσης.

Το overriding χρησιμοποιείται γενικά για να συμπεριλάβει μια συγκεκριμένη εφαρμογή της συμπεριφοράς ενός αντικειμένου στην υποκλάση.

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

Παραγωγή:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

Το παραπάνω παράδειγμα δείχνει πώς η μέθοδος μήνυμα() παρακάμπτεται στις υποκατηγορίες Οικονομίες και Προθεσμιακή κατάθεση Το Διαφορετικά μηνύματα θα εμφανίζονται για τους κατόχους τραπεζικών λογαριασμών με λογαριασμό Ταμιευτηρίου και αυτούς με λογαριασμό Σταθερής Κατάθεσης.

Σχετίζεται με: Τι πρέπει να γνωρίζετε για τη χρήση συμβολοσειρών στην Java

Αξίζει επίσης να σημειωθεί ότι η υπέρβαση της μεθόδου επιδεικνύει πολυμορφισμό χρόνου εκτέλεσης ή δυναμική αποστολή μεθόδων. Αυτό σημαίνει ότι η μέθοδος που καλείται επιλύεται κατά τη διάρκεια εκτέλεσης και όχι κατά τη μεταγλώττιση.

Για να αποφύγετε την παράκαμψη μιας μεθόδου, χρησιμοποιήστε τη λέξη -κλειδί τελικός Το

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

Όταν μια υποκλάση επιχειρήσει να την παρακάμψει, θα προκύψει σφάλμα μεταγλώττισης.

Ιδανικά, όλες οι μέθοδοι που καλούνται μέσα σε έναν κατασκευαστή πρέπει να είναι τελικός Το Αυτό γίνεται για να αποφευχθούν τυχόν ακούσιες αλλαγές που μπορεί να προκληθούν από τις υποκατηγορίες.

Μερικές φορές, μπορεί να χρειαστεί να αποκτήσετε πρόσβαση σε μια παράκαμψη μεθόδου εντός της επικρατέστερης μεθόδου. Μπορείτε να χρησιμοποιήσετε τη λέξη -κλειδί σούπερ ακολουθούμενος από τον τελεστή τελείας ( Το ) και το όνομα της μεθόδου σε μια τέτοια περίπτωση.

Σκεφτείτε την υπερκατηγορία Ζώο Το

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

Παρακάτω είναι μια υποκατηγορία, που ονομάζεται Ψάρι , που υπερισχύει κίνηση() :

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

Παραγωγή:

πώς να αναγκάσετε την επανεκκίνηση του macbook air
I can swim.
I can move.

Όταν αντικαθιστάτε μια μέθοδο, πρέπει επίσης να έχετε υπόψη σας τον τροποποιητή πρόσβασης που χρησιμοποιείται. Ο τροποποιητής στην υποκατηγορία πρέπει να έχει το ίδιο επίπεδο ορατότητας ή υψηλότερο από αυτό της βασικής κλάσης. Για παράδειγμα, εάν η μέθοδος στη βασική κλάση ορίζεται ως προστατεύονται , τότε η επιτακτική μέθοδος μπορεί είτε να είναι προστατεύονται ή δημόσιο Το

Απλός κώδικας με πολυμορφισμό

Η αντικατάσταση και η υπερφόρτωση μεθόδων είναι σημαντικές για την απλοποίηση του κώδικα και ο απλός κώδικας είναι καλή πρακτική.

Γιατί; Φανταστείτε μια σύνθετη βάση κώδικα με περισσότερα μέσα και έξω από ό, τι από τον Grand Central Station. Τώρα φανταστείτε ότι ένα καταστροφικό σφάλμα αρχίζει να καταστρέφει τη σκληρή δουλειά σας μπροστά στα μάτια σας. Πρέπει να απομονώσετε την πηγή της λοίμωξης και πρέπει να το κάνετε γρήγορα.

Καλή τύχη, δεν απλοποιήσατε τον κωδικό σας ... Τώρα πρόκειται να πάρετε ένα πραγματικό μάθημα κρυπτογραφίας. Η χρήση αποτελεσματικών δομών δεδομένων και το να κάνετε ό, τι μπορείτε για να συντομεύσετε τον κώδικα (όπως να έχετε κατά νου το DRY) είναι η καλύτερη άμυνά σας απέναντι σε μια τέτοια κατάσταση.

Στη συνέχεια, στη λίστα εκμάθησης Java θα πρέπει να εργάζεστε με πίνακες. Είναι σημαντικές δομές δεδομένων που χρησιμοποιούνται για την αποθήκευση παρτίδων σημείων δεδομένων.

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Πώς να δημιουργήσετε και να εκτελέσετε λειτουργίες σε πίνακες σε Java

Μαθαίνετε Java; Αφήστε τους πίνακες να χειρίζονται τα δεδομένα σας με ευκολία.

Διαβάστε Επόμενο
Σχετικά θέματα
  • Προγραμματισμός
  • Ιάβα
  • Φροντιστήρια κωδικοποίησης
Σχετικά με τον Συγγραφέα Τζερόμ Ντέιβιντσον(Δημοσιεύθηκαν 22 άρθρα)

Ο Jerome είναι Staff Writer στο MakeUseOf. Καλύπτει άρθρα σχετικά με τον Προγραμματισμό και το Linux. Είναι επίσης λάτρης των κρυπτογράφησης και παρακολουθεί πάντα τη βιομηχανία κρυπτογράφησης.

Περισσότερα από τον Jerome Davidson

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή