Η υπερφόρτωση μεθόδου, γνωστή και ως υπερφόρτωση λειτουργίας ή πολυμορφισμός χρόνου σύνταξης, είναι μια έννοια της ύπαρξης δύο ή περισσοτέρων μεθόδων με το ίδιο όνομα αλλά διαφορετικής υπογραφής στο ίδιο πεδίο. Υπάρχουν πολλές γλώσσες προγραμματισμού που υποστηρίζουν αυτή τη λειτουργία: Ada, C ++, C #, D και Java.
Παράδειγμα υπερφόρτωσης μεθόδου σε C #
τάξη υπερπλήρωσης κλάσης {float Πολύγωνο (int ακτίνα, float pi) {float circleArea = pi * ακτίνα * ακτίνα; } int Πολύγωνο (int μήκος, int εύρος) {int rectangleArea = μήκος * πλάτος; } int Πολύγωνο (πλευρά int) {int squareArea = πλευρά * πλευρά; }}1 2 3 4 5 6 7 8 9 10 11 12 13 14 | τάξη υπερπλήρωσης κλάσης {float Πολύγωνο (int ακτίνα, float pi) {float circleArea = pi * ακτίνα * ακτίνα; } int Πολύγωνο (int μήκος, int εύρος) {int rectangleArea = μήκος * πλάτος; } int Πολύγωνο (πλευρά int) {int squareArea = πλευρά * πλευρά; }} |
Όπως φαίνεται στο παραπάνω παράδειγμα, η μέθοδος 'Polygon' είναι υπερφορτωμένη 3 φορές με διαφορετική υπογραφή μεθόδου, δηλαδή ο τύπος ή ο αριθμός των παραμέτρων είναι διαφορετικοί.
Μέθοδος Υπέρβαση
Η μέθοδος overriding, επίσης γνωστή ως Overriding Function ή Polymorphism run time, είναι μια δυνατότητα OOP που επιτρέπει σε μια κλάση παιδιού να παρέχει τη δική της εφαρμογή στη μέθοδο που ορίζεται στη γονική κλάση. Η υλοποίηση στην κλάση παιδιού υπερισχύει του ορισμού της μεθόδου στην βασική κλάση, υπό την προϋπόθεση ότι η μέθοδος στην κατηγορία παιδιού θα πρέπει να έχει το ίδιο όνομα, υπογραφή και τύπο επιστροφής.
Παράδειγμα υπέρβασης μεθόδου σε C #
class Source1 {public void draw () {Console.Writeline ("Είμαι στην τάξη Source1")? }} Το class Source2 επεκτείνει το Source1 {public void draw () {Console.Writeline ("Είμαι στην τάξη Source2"). }}1 2 3 4 5 6 7 8 9 10 | class Source1 {δημόσιο κενό κλήρωση () {Console. Writeline ("Είμαι στην τάξη Source1")? }} Η τάξη Source2 επεκτείνει το Source1 {public void draw () {Console. Writeline ("Είμαι στην τάξη Source2")? }} |
Εδώ, η μέθοδος draw στην κλάση Source2 υπερισχύει της μεθόδου draw που ορίζεται στην κλάση Source1.
Διαφορά μεταξύ υπερφόρτωσης μεθόδου και υπέρβασης μεθόδου
- Στη μέθοδο υπερφόρτωσης μεθόδου πρέπει να έχει διαφορετική υπογραφή. Στη μέθοδο, οι επικαλυπτικές μέθοδοι πρέπει να έχουν την ίδια υπογραφή.
- Η λειτουργία "Overloading" είναι η "προσθήκη" ή "επέκταση" περισσότερο στη συμπεριφορά της μεθόδου. Η συμπλήρωση της συνάρτησης είναι να "αλλάξει" πλήρως ή να "επαναπροσδιορίσει" τη συμπεριφορά μιας μεθόδου.
- Η υπερφόρτωση μεθόδου χρησιμοποιείται για να επιτύχει τον πολυμορφισμό χρόνου σύνταξης. η μέθοδος overriding χρησιμοποιείται για την επίτευξη πολυμορφισμού χρόνου εκτέλεσης.
- Στη μεταφόρτωση μεθόδων / λειτουργιών ο μεταγλωττιστής γνωρίζει ποιο αντικείμενο έχει εκχωρηθεί σε ποια κλάση κατά το χρόνο της σύνταξης, αλλά στην παράκαμψη της μεθόδου δεν είναι γνωστή μέχρι το χρόνο εκτέλεσης.
- Η λειτουργία Overloading πραγματοποιείται στην ίδια κλάση, ενώ η Overriding πραγματοποιείται σε μια τάξη που προέρχεται από μια κατηγορία βάσης.