The kluczowa różnica między zastąpieniem a przeciążeniem w C # jest to wiązanie przeciążonego wywołania metody do jego definicji następuje w czasie wykonywania, a wiązanie przeciążonego wywołania metody do jego definicji następuje w czasie kompilacji.
C # to język programowania ogólnego przeznaczenia opracowany przez Microsoft. Główną zaletą C # jest to, że obsługuje programowanie obiektowe (OOP). Jednym filarem OOP jest polimorfizm. Daje obiektowi wiele zachowań. Istnieją dwa typy polimorfizmu znane jako nadpisywanie i przeciążanie. W tym artykule omówiono różnicę między zastępowaniem metody a przeciążaniem w języku C #.
1. Przegląd i kluczowa różnica
2. Co jest nadpisywane w C #
3. Co to jest przeciążenie w C #
4. Podobieństwa między nadpisywaniem a przeciążaniem w C #
5. Porównanie obok siebie - Przesłanianie vs Przeciążanie w C # w formie tabelarycznej
6. Podsumowanie
Istnieje jeszcze jedna ważna koncepcja w OOP - dziedziczenie. Wykorzystuje atrybuty i metody już istniejącej klasy. Poprawia możliwość ponownego użycia kodu. Już istniejąca klasa jest klasą bazową, a nowa klasa jest znana jako klasa pochodna. W zastępowaniu polimorfizmu powinna istnieć klasa podstawowa i klasa pochodna. Wiązanie zastąpionego wywołania metody z definicją odbywa się w czasie wykonywania. Przykład jest następujący.
Rysunek 01: Program C # z przesłonięciem
Zgodnie z powyższym programem klasa Shape jest klasą podstawową i zawiera metodę wyświetlania. Klasa Prostokąt i Trójkąt są klasami pochodnymi. Te pochodne klasy mają również tę samą metodę wyświetlania z własnymi implementacjami.
Najpierw tworzona jest zmienna referencyjna obj. Wskazuje obiekt Shape. Tak więc metoda wyświetlania klasy Shape zostanie wykonana. Następnie zmienna odniesienia wskazuje na obiekt Rectangle. Tak więc metoda wyświetlania klasy Rectangle zostanie wykonana. Na koniec zmienna odniesienia wskazuje na obiekt Triangle. Tak więc metoda wyświetlania klasy Triangle zostanie wykonana. Metoda wyświetlania klasy bazowej jest zastępowana przez metody wyświetlania klas pochodnych.
O sposobie uruchomienia decyduje środowisko wykonawcze. Klasa Shape została napisana za pomocą słowa kluczowego „virtual”. Klasy Rectangle i Triangle są zapisywane za pomocą słowa kluczowego „override”. Jeśli te słowa kluczowe nie zostaną użyte, wynik wyświetli dla wszystkich zawartość metody wyświetlania klasy Shape.
W przypadku przeciążenia wiele metod ma tę samą nazwę, ale z różnymi parametrami. Parametry mogą być różnych typów. Metody mogą mieć także inną liczbę parametrów. Przeciążenie metody występuje w tej samej klasie. Wiązanie przeciążonych metod z definicją następuje w czasie kompilacji. Zobacz poniższy program C #.
Rysunek 02: Program C # z przeciążeniem
Zgodnie z powyższym programem klasa A ma dwie metody o tej samej nazwie zwane sumą. Mają różne typy parametrów. W programie głównym tworzony jest obiekt A. Suma (2,3) wywoła metodę sumowania z liczbami całkowitymi. Suma (5.1, 7.94) wywoła metodę sumowania z podwójnymi wartościami. Obie metody mają tę samą nazwę i tę samą liczbę parametrów. Ale typy parametrów są różne. Wymagana metoda jest odpowiednio wywoływana. Przeciążenie może również wystąpić, jeśli nazwy metod i typy parametrów są takie same, ale liczba parametrów jest inna.
Przesłanianie vs Przeciążanie w C # | |
Przesłonięcie w języku C # polega na zapewnieniu konkretnej implementacji w metodzie klasy pochodnej dla metody już istniejącej w klasie bazowej. | Przeciążenie w języku C # polega na utworzeniu wielu metod o tej samej nazwie z różnymi implementacjami. |
Parametry | |
W C # Overriding metody mają tę samą nazwę, te same typy parametrów i tę samą liczbę parametrów. | W przeciążeniu C # metody mają tę samą nazwę, ale inną liczbę parametrów lub inny typ parametrów. |
Występowanie | |
W języku C # zastąpienie występuje w klasie bazowej i klasie pochodnej. | W języku C # przeciążenie występuje w tej samej klasie. |
Czas wiązania | |
Wiązanie zastąpionego wywołania metody z jego definicją odbywa się w czasie wykonywania. | Powiązanie przeciążonego wywołania metody z jego definicją następuje w czasie kompilacji. |
Synonimy | |
Przesłanianie jest nazywane jako polimorfizm środowiska uruchomieniowego, dynamiczny polimorfizm lub późne wiązanie. | Przeciążenie nazywa się jako skompilować polimorfizm czasowy, polimorfizm statyczny lub wczesne wiązanie. |
Przesłonięcie i przeciążenie to dwa rodzaje polimorfizmu. Różnica między nadpisywaniem a przeciążaniem w języku C # polega na tym, że wiązanie przeciążonego wywołania metody z jego definicją odbywa się w czasie wykonywania, a wiązanie przeciążonego wywołania metody z jego definicją odbywa się w czasie kompilacji.
1.Kumar, Mukesh. C # Corner. Dostępny tutaj
2.tutorialspoint.com. „Polimorfizm C #”. TutorialsPoint. Dostępny tutaj
3.tutorialspoint.com. „Typy danych C #”. TutorialsPoint, dostępny tutaj