Skip to main content

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

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

Ένα απλό παράδειγμα υπερφόρτωσης μεθόδου θα ήταν μια μέθοδος που υπολογίζει την περιοχή ενός τετραγώνου.Μπορεί να οριστεί ως getarea (τετράγωνα).Αυτή η μέθοδος θα μπορούσε να υπερφορτωθεί για να υπολογίσει επιπλέον την περιοχή του κύκλου προσθέτοντας τη μέθοδο getArea (κύκλος C).

Η κύρια απαίτηση για υπερφόρτωση μεθόδων είναι ότι οι μέθοδοι μοιράζονται το ίδιο όνομα.Οι υπογραφές της μεθόδου mdash;το όνομα της μεθόδου, τον αριθμό των παραμέτρων και τους τύπους δεδομένων παραμέτρων mdash;θα πρέπει διαφορετικά να είναι μοναδικό.Με αυτόν τον τρόπο, ο μεταγλωττιστής μπορεί να καθορίσει ποια μέθοδο εκτέλεσε.Αυτό γίνεται για να αρχικοποιήσετε ένα αντικείμενο με τιμές μη προοπτικής.Για παράδειγμα, ένα αντικείμενο εργαζομένων με δύο πεδία (όνομα και ημερομηνία γέννησης ή DOB) μπορεί να έχει τους ακόλουθους υπερφορτωμένους κατασκευαστές: υπάλληλος (), υπάλληλος (όνομα) και υπάλληλος (όνομα, DOB).Ο πρώτος κατασκευαστής δημιουργεί ένα αντικείμενο υπαλλήλου με κενό όνομα και πεδία DOB.Το δεύτερο ορίζει το πεδίο ονόματος, αλλά αφήνει το πεδίο DOB πεδίο κενό και το τρίτο ορίζει τόσο το όνομα όσο και τα πεδία DOB.Στο παράδειγμα GetArea (), ενώ υπάρχουν φυσικά δύο μεθόδους, ο καλών παρουσιάζεται με μία μόνο, λογική μέθοδο getArea ().Με αυτόν τον τρόπο, το getArea () μπορεί να επεκταθεί για να εργαστεί σε άλλα σχήματα mdash;τρίγωνα, τραπεζοειδή, και ούτω καθεξής mdash;ενώ εξακολουθεί να παρουσιάζεται λογικά ως μία μέθοδος. Οι μέθοδοι είναι επίσης υπερφορτωμένες για να διατηρηθούν η συμβατότητα προς τα πίσω.Μια μέθοδος που κάνει έναν πολύπλοκο υπολογισμό θα μπορούσε να δοθεί μια νέα απαίτηση για την προαιρετική εκτέλεση του ίδιου υπολογισμού με μια μικρή αλλαγή.Μια νέα παράμετρος προστίθεται στη μέθοδο που θα καθορίσει τον τρόπο εκτέλεσης του υπολογισμού mdash;Ο παλιός τρόπος ή ο νέος τρόπος.

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

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