Kluczowa różnica - zastępowanie a przeciążanie w języku C #
Kluczowa różnica między zastępowaniem i przeciążaniem w C # polega na tym, że powiązanie wywołania metody zastępowanej z jej definicją następuje w czasie wykonywania, podczas gdy powiązanie wywołania metody przeciążonej z definicją następuje w czasie kompilacji.
C # to język programowania ogólnego przeznaczenia opracowany przez firmę Microsoft. Główną zaletą języka C # jest to, że obsługuje programowanie obiektowe (OOP). Jednym z filarów 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 metod a przeciążaniem w języku C #.
ZAWARTOŚĆ
1. Omówienie i kluczowa różnica
2. Co jest zastępowaniem w języku C #
3. Co to jest przeciążanie w języku C #
4. Podobieństwa między zastępowaniem i przeciążaniem w języku C #
5. Porównanie obok siebie - zastępowanie a przeciążanie w języku C # w formie tabelarycznej
6. Podsumowanie
Co to jest przesłanianie w C #?
Jest jeszcze jedna ważna koncepcja w OOP - dziedziczenie. Ma używać atrybutów i metod już istniejącej klasy. Poprawia możliwość ponownego wykorzystania kodu. Już istniejąca klasa jest klasą bazową, a nowa klasa jest nazywana klasą pochodną. Przy nadpisywaniu polimorfizmu powinna istnieć klasa bazowa i klasa pochodna. Powiązanie zastąpionego wywołania metody z definicją odbywa się w czasie wykonywania. Przykład jest następujący.
Rysunek 01: Program C # z zastępowaniem
Zgodnie z powyższym programem, klasa Shape jest klasą bazową i zawiera metodę wyświetlania. Class Rectangle i Triangle to klasy pochodne. Te klasy pochodne mają również wyświetlanie tej samej metody z własnymi implementacjami.
Najpierw tworzona jest zmienna referencyjna obj. Wskazuje na obiekt Shape. Tak więc zostanie wykonana metoda wyświetlania klasy Shape. Następnie zmienna referencyjna wskazuje na obiekt Rectangle. Tak więc zostanie wykonana metoda wyświetlania klasy Rectangle. Wreszcie zmienna referencyjna wskazuje na obiekt Triangle. Tak więc zostanie wykonana metoda wyświetlania klasy Triangle. Metoda wyświetlania klasy bazowej jest zastępowana przez metody wyświetlania klas pochodnych.
Metoda uruchomienia jest określana w czasie wykonywania. Klasa Shape jest napisana za pomocą słowa kluczowego „virtual”. Klasy Rectangle i Triangle są napisane za pomocą słowa kluczowego „override”. Jeśli te słowa kluczowe nie są używane, wynik wydrukuje zawartość metody wyświetlania klasy Shape dla wszystkich.
Co to jest przeciążanie w języku C #?
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ć również różną liczbę parametrów. Przeciążanie metod występuje w tej samej klasie. Powiązanie przeciążonych metod z definicją odbywa się w czasie kompilacji. Zapoznaj się z poniższym programem w języku C #.
Rysunek 02: Program w 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ę sum z liczbami całkowitymi. Suma (5.1, 7.94) wywoła metodę sum z podwójnymi wartościami. Obie metody mają tę samą nazwę i taką 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.
Jakie jest podobieństwo między zastępowaniem a przeciążaniem w języku C #?
Zarówno zastępowanie, jak i przeciążanie w języku C # są typami polimorfizmu
Jaka jest różnica między zastępowaniem a przeciążaniem w języku C #?
Porównaj środek artykułu przed tabelą
Zastępowanie a przeciążanie w języku C # |
|
Zastępowanie w C # ma na celu zapewnienie określonej implementacji w metodzie klasy pochodnej dla metody już istniejącej w klasie bazowej. | Przeciążanie w C # polega na utworzeniu wielu metod o tej samej nazwie z różnymi implementacjami. |
Parametry | |
W C # zastępowaniu metody mają tę samą nazwę, te same typy parametrów i taką samą liczbę parametrów. | W C # Przeciążanie metody mają tę samą nazwę, ale inną liczbę parametrów lub inny typ parametrów. |
Występowanie | |
W C # zastępowanie występuje w klasie bazowej i klasie pochodnej. | W C # przeciążenie występuje w tej samej klasie. |
Czas wiązania | |
Powiązanie zastąpionego wywołania metody z jej definicją odbywa się w czasie wykonywania. | Powiązanie przeciążonego wywołania metody z jego definicją odbywa się w czasie kompilacji. |
Synonimy | |
Zastępowanie jest nazywane polimorfizmem w czasie wykonywania, polimorfizmem dynamicznym lub późnym wiązaniem. | Przeciążanie jest nazywane polimorfizmem czasu kompilacji, polimorfizmem statycznym lub wczesnym wiązaniem. |
Podsumowanie - zastępowanie a przeciążanie w języku C #
Zastępowanie i Przeciążanie to dwa typy polimorfizmu. Różnica między zastępowaniem i przeciążaniem w języku C # polega na tym, że powiązanie zastąpionego wywołania metody z jej definicją odbywa się w czasie wykonywania, podczas gdy powiązanie przeciążonego wywołania metody z jego definicją odbywa się w czasie kompilacji.