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

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

Βίντεο: Διαφορά μεταξύ παράκαμψης και υπερφόρτωσης

Βίντεο: Διαφορά μεταξύ παράκαμψης και υπερφόρτωσης
Βίντεο: ΑΟΘ: Η διαφορά Ζητούμενης ποσότητας και Ζήτησης | Econtopia 2024, Ιούλιος
Anonim

Παράκαμψη εναντίον Υπερφόρτωσης

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

Τι είναι Overriding;

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

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

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

Ποια είναι η διαφορά μεταξύ Παράκαμψης και Υπερφόρτωσης;

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

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

Συνιστάται: