Jak używać metody wirtualnej w C#

Jak używać metody wirtualnej w C#
Metody wirtualne są ważną cechą języków programowania zorientowanych na obiekty, takich jak C#. Pozwalają klasom na zdefiniowanie metod, które można zastąpić za pomocą klas pochodnych, zapewniając klasom sposób dostosowania zachowania ich klas rodziców.

Jaka jest wirtualna metoda w C#

Metody wirtualne w C# są metodami zadeklarowanymi w klasie podstawowej i można je zastąpić za pomocą klas pochodnych. Innymi słowy, metoda wirtualna jest metodą, którą można na nowo zdefiniować w podklasie, oto składnia dla niej:

Publiczna wirtualna pustka ()

// Wdrożenie metody

Wirtualne słowo kluczowe wskazuje, że metodę tę można zastąpić przez klasę pochodną, ​​a gdy klasa pochodna zastępuje metodę wirtualną, zapewnia własną implementację metody.

Aby zastąpić metodę wirtualną w klasie pochodnej, uwzględniasz słowo kluczowe Zastąpienia w podpisie metody, a poniżej znajduje się składnia:

publiczne zastąpienie pustki ()

// Wdrożenie metody

Słowo kluczowe Zastąpienia wskazuje, że ta metoda zastępuje metodę wirtualną w klasie nadrzędnej. Oto przykładowy fragment kodu, który pokazuje stosowanie metod wirtualnych w C#:

za pomocą systemu;
// Zdefiniuj klasę podstawową o nazwie obliczenia
Obliczanie klasy

// Zdefiniuj wirtualną metodę dodawania, która wymaga dwóch liczb całkowitych i zwraca wynik liczby całkowitej
Public Virtual Int Add (int x, int y)

zwrócić x + y; // Zwróć sumę dwóch liczb całkowitych wejściowych


// Zdefiniuj klasę pochodną o nazwie CustomCalculation, która dziedziczy po obliczeniach
Klasa CustomCalculation: Obliczanie

// Zastąp metodę dodawania klasy podstawowej
publiczne zastąpienie int add (int x, int y)

if (x> 10 || y> 10) // Jeśli którykolwiek z liczb całkowitych wejściowych jest większy niż 10

powrót x - y; // odejmij y od x i zwróć wynik

w przeciwnym razie, jeśli żaden z liczb całkowitych wejściowych nie jest większy niż 10

Baza powrotna.Dodaj (x, y); // Wywołaj metodę dodawania klasy podstawowej, aby zwrócić sumę dwóch liczb całkowitych wejściowych



Program klasowy

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

// Utwórz instancję klasy podstawowej o nazwie obliczenia
Obliczanie Calc = new Convulaculation ();
// Utwórz instancję pochodnej klasy o nazwie CustomCalculation
CustomCalculationCustomCalc = new CustomCalculation ();
// wywołać metodę Virtual Add na obiekcie obliczeń podstawowych
int wynik1 = calc.Dodaj (5, 7);
Konsola.WriteLine ($ "wynik1: wynik1"); // Wyjście: wynik1: 12
// Wywołaj metodę nadrzędną dodawanie obiektu CustomCalculation
int wynik2 = CustomCalc.Dodaj (12, 7);
Konsola.WriteLine ($ "wynik2: wynik2"); // Wyjście: wynik 2: 5

W tym przykładzie mamy klasę podstawową zwaną obliczeniami z wirtualną metodą o nazwie Add, która po prostu dodaje dwie liczby całkowite razem. Mamy również klasę pochodną o nazwie CustomCalculation, która zastępuje metodę ADD, ale tylko wtedy, gdy suma dwóch liczb jest większa niż 10.

W metodzie zastąpionej dodawania sprawdzamy, czy x lub y jest większe niż 10. Jeśli ten warunek jest prawdziwy, zwracamy różnicę między x i y, a jeśli warunek jest fałszywy, wywołujemy podstawową implementację metody dodawania za pomocą podstawowego słowa kluczowego.

W głównej metodzie tworzymy obiekt obliczeniowy i obiekt CustomCalculation. Najpierw wywołujemy metodę Virtual Add w obiekcie obliczeń podstawowych, przechodząc w 5 i 7 jako argumenty. Powinno to spowodować sumę 12, a następnie wywołujemy metodę nadmierną dodawanie do obiektu CustomCalculation, przechodząc w 12 i 7 jako argumenty. Powinno to skutkować różnicą 5, ponieważ suma dwóch liczb jest większa niż 10.

Jak widać, zastąpiona metoda dodawania w klasie CustomCalculation jest wywoływana tylko wtedy, gdy warunek jest fałszywy. Gdy warunek jest prawdziwy, zastąpiona metoda zapewnia inną implementację metody dodawania, która odejmuje drugą liczbę od pierwszej, poniżej znajduje się dane wyjściowe kodu:

Wniosek

Metoda wirtualna w C# stanowi sposób zdefiniowania metod, które można dostosować za pomocą klas pochodnych. Oznaczając metodę jako wirtualną, pozwalasz klasom pochodnym zapewnić własną implementację metody, a jego jest potężną cechą programowania obiektowego, które pozwala na większą elastyczność i możliwość ponownego użycia kodu.