Jak używać polimorfizmu w C#

Jak używać polimorfizmu w C#
Polimorfizm jest szeroko stosowany w koncepcji programowania zorientowanego na obiekt. Polimorfizm pozwala klasie pochodnej mieć wiele form, które można traktować jako klasę podstawową. C# obsługuje polimorfizm poprzez różne mechanizmy, takie jak przeciążenie metod i zastępowanie metod. Ten artykuł obejmuje stosowanie polimorfizmu w C#.

Spis treści

  • Co to jest polimorfizm w C#
  • Rodzaje polimorfizmu w C#
  • Przeciążenie metody
  • Metoda zastępująca
  • Przykłady polimorfizmu w C#
  • Jak używać polimorfizmu w C#
  • Wniosek

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:

  • Czas kompilacji [przeciążenie metody]
  • Czas wykonawczy [zastępowanie metody]

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;
Program klasowy

void calculatesum (int num1, int num2)

Konsola.WriteLine ($ "suma num1 i num2 jest num1 + num2");

void calculatesum (Double NUM1, Double NUM2)

Konsola.WriteLine ($ "suma num1 i num2 jest num1 + num2");

Statyczne pustka główna (String [] args)

Program programu = nowy program ();
int intnum1 = 1;
intntnum2 = 2;
podwójny dublenum1 = 12.5;
podwójny dublenum2 = 7.5;
program.Calculatesum (intnum1, intnum2);
program.Calculatesum (Doublenum1, Doublenum2);

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;
Kształt klasy publicznej

Public Virtual Void Draw ()

Konsola.WriteLine („rysowanie kształtu”);


Prostokąt klasy publicznej: kształt

publiczne zastąpienie Void Draw ()

Konsola.WriteLine („rysowanie prostokąta”);


Program klasy publicznej

public static void main (string [] args)

Kształt kształt = nowy kształt ();
kształt.Rysować();
Rectangle Rectangle = new Rectangle ();
prostokąt.Rysować();

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 publicznej

Public Virtual Void Makeound ()

Konsola.WriteLine („Zwierzę robi dźwięk”);

Powyż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ę

publiczne zastąpienie void Makeound ()

Konsola.WriteLine („The Dog Barks”);


Klasa publiczna Kot: Zwierzę

publiczne zastąpienie void Makeound ()

Konsola.WriteLine („The Cat Meows”);

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ę ();
Animal mydog = New Dog ();
Animal mycat = new cat ();
Myanimal.Wydawać dźwięk();
mój pies.Wydawać dźwięk();
mój kot.Wydawać dźwięk();

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;
Zwierzę z klasy publicznej

Public Virtual Void Makeound ()

Konsola.WriteLine („Zwierzę robi dźwięk”);


Klasa publiczna pies: zwierzę

publiczne zastąpienie void Makeound ()

Konsola.WriteLine („The Dog Barks”);


Klasa publiczna Kot: Zwierzę

publiczne zastąpienie void Makeound ()

Konsola.WriteLine („The Cat Meows”);


Program klasy publicznej

public static void main ()

Zwierzę Myanimal = nowy zwierzę ();
Animal mydog = New Dog ();
Animal mycat = new cat ();
Myanimal.Wydawać dźwięk();
mój pies.Wydawać dźwięk();
mój kot.Wydawać dźwięk();

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#.