Διαφορά μεταξύ υπέρβασης και υπερφόρτωσης

Anonim

Υπέρβαση έναντι υπερφόρτωσης

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

Τι είναι η Υπέρβαση;

Όπως αναφέρθηκε παραπάνω, μια τάξη μπορεί να επεκτείνει μια κλάση super ή μια γονική τάξη, σε αντικειμενοστρεφείς γλώσσες προγραμματισμού. Μια κλάση παιδιού μπορεί να έχει τις δικές της μεθόδους ή μπορεί προαιρετικά να έχει τις δικές της υλοποιήσεις σε μεθόδους που έχουν ήδη οριστεί στη γονική τάξη (ή σε μία από τις μεγάλες γονικές τάξεις της). Έτσι, όταν συμβαίνει αυτό, ονομάζεται μέθοδος overriding. Με άλλα λόγια, αν η τάξη παιδί παρέχει μια εφαρμογή σε μια μέθοδο με τον ίδιο τύπο υπογραφής και επιστροφής ως μια μέθοδο που έχει ήδη οριστεί σε μία από τις μητρικές τάξεις της, αυτή η μέθοδος λέγεται ότι αντικαθίσταται από την εφαρμογή της κλάσης. Έτσι, αν υπάρχει μια υπερτιμημένη μέθοδος σε μια κλάση, το σύστημα χρόνου εκτέλεσης θα πρέπει να αποφασίσει ποια μέθοδος εφαρμογής χρησιμοποιείται. Αυτό το ζήτημα επιλύεται εξετάζοντας τον ακριβή τύπο αντικειμένου που χρησιμοποιείται για την επίκληση του. Εάν ένα αντικείμενο της γονικής κλάσης χρησιμοποιείται για να επικαλεσθεί την υπερπηδημένη μέθοδο, τότε χρησιμοποιείται η εφαρμογή στη γονική κλάση. Ομοίως, αν είναι ένα αντικείμενο της κλάσης παιδιού που χρησιμοποιείται, τότε χρησιμοποιείται η εφαρμογή της κλάσης παιδιού. Οι σύγχρονες γλώσσες προγραμματισμού όπως το Java, το Eifell, το C ++ και το Python επιτρέπουν την υπέρβαση της μεθόδου.

Τι είναι η υπερφόρτωση;

Η υπερφόρτωση μεθόδου είναι μια λειτουργία που παρέχεται από ορισμένες γλώσσες προγραμματισμού για τη δημιουργία περισσότερων από μιας μεθόδων με το ίδιο όνομα, αλλά με διαφορετικούς τύπους εισόδου και εξόδου. Στις σύγχρονες γλώσσες προγραμματισμού όπως Java, C #, C ++ και VB. NET, αυτή η δυνατότητα είναι διαθέσιμη. Μπορείτε να υπερφορτώσετε μια μέθοδο δημιουργώντας μια άλλη μέθοδο με το ίδιο όνομα αλλά με διαφορετική υπογραφή μεθόδου ή διαφορετικό τύπο επιστροφής (ή και τα δύο). Για παράδειγμα, εάν έχετε την μέθοδο1 (type1 t1) και τη μέθοδο1 (type2 t2) μέσα στην ίδια κλάση, τότε είναι υπερφορτωμένες. Στη συνέχεια, το σύστημα θα πρέπει να αποφασίσει ποια θα εκτελεστεί όταν καλείται. Αυτή η διαφοροποίηση γίνεται με την εξέταση του τύπου των παραμέτρων που υποβλήθηκαν στη μέθοδο. Εάν το όρισμα είναι τύπου 1, τότε καλείται η πρώτη υλοποίηση, ενώ αν είναι τύπου2, τότε ονομάζεται η δεύτερη υλοποίηση.

Ποια είναι η διαφορά ανάμεσα στην Υπέρβαση και την Υπερφόρτωση;

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

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