Spis treści
Co to jest polimorfizm w C#
Polimorfizm pochodzi z dwóch greckich słów: poli I Morph. Słowo poli tutaj oznacza wielu i Morph oznacza formy. Jest to zdolność obiektu w programowaniu do pozyskiwania różnych formularzy.
Polimorfizm umożliwia leczenie przedmiotów z różnych klas, tak jak pochodziły z tej samej klasy. Można to zrobić za pomocą pojęcia dziedziczenia, ponieważ pozwala to klasom pochodnym na przyjmowanie lub odziedziczenie właściwości klasy podstawowej.
Rodzaje polimorfizmu w C#
Polimorfizm można podzielić na dwa typy na podstawie tego, kiedy się pojawia:
Przeciążenie metody
Przeciążenie metody może zdefiniować wiele metod o tej samej nazwie, ale zawierające różne parametry. Kompilator decyduje o metodzie, która zostanie wywołana na podstawie argumentów podanych metodom. Za pomocą przeciążenia metodami możemy wykonywać podobne zadania, ale mają różne parametry wejściowe.
Metoda zastępująca
Metoda zastępowani w C# jest techniką, która pozwala klasie pochodnej zapewnić własną implementację metody, która jest już dostarczana przez jej klasę podstawową. Zastępowanie metody jest jak wirtualna funkcja C++. Gdy metoda w klasie pochodnej ma tę samą nazwę, ten sam typ powrotu i te same parametry co metoda w klasie podstawowej, wówczas metoda w klasie pochodnej jest zastępuje metodę w klasie podstawowej.
W polimorfizmie nadmierna metoda podstawowa powinna być wirtualna, abstrakcyjna lub zastępowana. Metody zastępowania wdrażać istniejących członków klasy bazowej w nowy sposób. Zastępowanie metody osiąga się za pomocą wirtualnych i zastępujących słowa kluczowe.
Przykłady polimorfizmu w C#
Poniżej podano przykładowy kod, który wyjaśnia obie metody nadrzędne i przeciążające w C#:
Przykład 1: Przeciążenie metody przeciążenia
Tutaj, w poniższym przykładzie, zdefiniowaliśmy wiele metod w jednej klasie. Wszystkie te metody mają tę samą nazwę, ale zawierają różne parametry.
za pomocą systemu;Powyższy kod podaje dwie liczby do sumowania i pokazuje Przeciążenie metody w C#. Obliczanie Metoda jest przeciążona, aby zaakceptować odpowiednio dwa parametry liczb całkowitych i dwa podwójne parametry.
Główna metoda tworzy instancję klasy programu i dwukrotnie wywołuje metodę obliczeniową, raz z dwoma argumentami całkowitymi i dwoma podwójnymi argumentami.
Po uruchomieniu programu drukuje sumę dwóch liczb przekazanych do Obliczanie Metoda przy użyciu interpolacji ciągów do utworzenia komunikatu wyjściowego. Następujące dane wyjściowe można zobaczyć na konsoli:
Przykład 2: Zastępowanie metody
Ten przykład pokazuje koncepcję zastępowania metody, w której klasa pochodna może zapewnić własną wdrożenie metody odziedziczonej po swojej klasie podstawowej.
za pomocą systemu;Oto klasa podstawowa, która się nazywa Klasa kształtu. Klasa kształtu zawiera wirtualną metodę zwaną Rysować. Tutaj wirtualne słowo kluczowe wskazuje, że klasa pochodna może zastąpić określoną metodę.
Klasa prostokąta zastępuje Rysować metoda i pochodzi z klasy kształtu. Klasa prostokąta ma swój własny zestaw właściwości do wdrożenia. W takim przypadku metoda rysowania drukowanych klas prostokątnych Rysunek prostokąta zamiast Rysowanie kształtu.
Dalej, w Główny(), powstaje instancja klasy kształtu, a jej metoda losowania jest wywoływana. Następnie tworzona jest instancja klasy prostokąta, a jej metoda losowania jest wywoływana.
Ponieważ klasa prostokąta zastępuje metodę rysowania klasy kształtu, kiedy wywołujemy metodę rysowania na obiekcie prostokąta, wywoływana jest implementacja klasy prostokąta, i Rysunek prostokąta jest wydrukowany do konsoli. Po uruchomieniu programu wyświetli się:
Jak używać polimorfizmu w C#
Po poznaniu koncepcji polimorfizmu w C#, teraz omówimy kroki, aby użyć go w programowaniu C#.
Krok 1: Zdefiniuj klasę podstawową
Pierwszym krokiem jest zdefiniowanie klasy podstawowej zawierającej metody lub właściwości, które będą udostępniane przez wszystkie pochodne klasy. Klasa podstawowa jest definiowana za pomocą klasa Słowo kluczowe:
Zwierzę z klasy publicznejPowyższy kod zawiera klasę podstawową Zwierzę to ma wirtualną metodę Wydawać dźwięk. Wirtualne słowo kluczowe pokazuje, że klasa pochodna zastąpi określoną metodę.
Krok 2: Zdefiniuj pochodne klasy
Następnym krokiem jest zdefiniowanie klas pochodnych pochodzących z klasy podstawowej. W C#możemy zdefiniować klasę pochodną za pomocą „:” operator.
Klasa publiczna pies: zwierzęPowyższy przykład zawiera dwie klasy napędowe Pies I Kot, i obie te klasy pobierają właściwości z klasy podstawowej, która nazywa się zwierzęciem. Obie klasy zastępują Wydawać dźwięk Metoda z ich wdrożeniem.
Krok 3: Użyj polimorfizmu
Ostatnim krokiem jest użycie polimorfizmu w kodzie. Teraz zdefiniujemy instancje klas pochodnych i wywołymy ich metody za pomocą odniesienia klasy podstawowej.
Zwierzę Myanimal = nowy zwierzę ();Tutaj stworzyliśmy instancje klas zwierząt, psów i kotów. Potem Wydawać dźwięk Metoda jest wywoływana w każdej instancji. Od Wydawać dźwięk Metoda jest wirtualna, faktyczna implementacja wywoływana zależy od rzeczywistego rodzaju instancji. Oznacza to, że kiedy nazywamy mydog.Makeound () lub mycat.Makeound (), Wydawać dźwięk Metoda zostanie wywołana odpowiednio w klasie psów lub kotów.
Przykładowy kod
Poniżej znajduje się połączony kod wyżej wymyślonych kroków:
za pomocą systemu;Po uruchomieniu powyższego kodu na konsoli można zobaczyć następujące dane wyjściowe:
Wniosek
Korzystanie z polimorfizmu w C# można napisać kod, który zarządza wieloma typami obiektów. W C#możemy użyć polimorfizmu, definiując klasę podstawową, tworząc klasy pochodne, które dziedziczą po klasie podstawowej, i korzystając z odniesienia klasy podstawowej, aby wywołać metody klas pochodnych. Wykonując kroki opisane w powyższym artykule, każdy może użyć koncepcji polimorfizmu w C#.