Jak korzystać z dziedziczenia w języku C#

Jak Korzystac Z Dziedziczenia W Jezyku C



Pisząc kod w obiektowym języku programowania, możemy natknąć się na sytuacje, w których musimy ponownie wykorzystać istniejący kod w nowej klasie lub dodać dodatkową funkcjonalność do istniejącej klasy. W takich przypadkach z pomocą przychodzi dziedziczenie. Dziedziczenie w programowaniu obiektowym umożliwia klasom dziedziczenie właściwości i zachowania innej klasy. W tym artykule omówiono użycie dziedziczenia w języku C# i jego różne typy.

Spis treści

Czym jest dziedziczenie w C#

Jak działa dziedziczenie w języku C#







Rodzaje dziedziczenia w C#



Wniosek



Czym jest dziedziczenie w C#

W języku C# przy użyciu dziedziczenia jedna klasa może przejąć lub odziedziczyć właściwości i metody innej klasy. Innymi słowy, umożliwia utworzenie nowej klasy w oparciu o istniejącą klasę, która jest znana jako klasa podstawowa lub superklasa. Nazywa się klasę utworzoną po przejęciu właściwości klasy bazowej klasa pochodna lub podklasa.





Ta klasa pochodna w języku C# nie tylko przyjmuje właściwości klasy bazowej, ale może również dodawać własne unikatowe funkcje.

Jak działa dziedziczenie w języku C#

W języku C# dziedziczenie odbywa się za pomocą dwukropka (:) symbol. Nazwa klasy bazowej jest zdefiniowana po dwukropku i jest określona przez klasę pochodną.



Poniżej przedstawiono składnię tworzenia klasy pochodnej, która pobiera właściwości z klasy bazowej:

klasa Klasa pochodna : Klasa podstawowa

{

// składowe klasy pochodnej

}

Tutaj w tym kodzie Klasy pochodnej jest nazwą klasy pochodnej i Klasa podstawowa jest nazwą klasy bazowej. The : symbol wskazuje, że DerivedClass dziedziczy po BaseClass. Członkowie DerivedClass mogą uzyskiwać dostęp do członków BaseClass, pod warunkiem, że nie są prywatni.

Rodzaje dziedziczenia w C#

Język C# obsługuje cztery typy dziedziczenia: jedno, wielopoziomowe, hierarchiczne i wielokrotne. Przyjrzyjmy się każdemu typowi.

Pojedyncze dziedziczenie

Dziedziczenie pojedyncze jest najczęstszym rodzajem dziedziczenia, w którym klasa pochodna przejmuje lub dziedziczy właściwości tylko jednej klasy podstawowej.

Na przykład, podany kod wyjaśnia hierarchię klas i demonstruje koncepcje dziedziczenia.

przy użyciu Systemu ;

przy użyciu Systemu ;
samochód klasy
{
publiczny próżnia Początek ( )
{
Konsola. Linia zapisu ( „Samochód uruchomiony” ) ;
}
}
klasa Tesli : Samochód
{
publiczny próżnia Przyśpieszyć ( )
{
Konsola. Linia zapisu ( „Tesla przyspiesza” ) ;
}
}
Program klasowy
{
statyczny próżnia Główny ( strunowy [ ] argumenty )
{
Tesla moja Tesla = nowa Tesla ( ) ;
mojaTesla. Początek ( ) ; // Dane wyjściowe: Samochód uruchomiony
mojaTesla. Przyśpieszyć ( ) ; // Dane wyjściowe: przyspieszenie Tesli
}
}

W powyższym kodzie plik Klasa samochodu jest klasą bazową i ma metodę o nazwie Początek() , który po prostu drukuje wiadomość Samochód uruchomiony do konsoli.

The klasa Tesli wywodzi się z klasy Car i przyjmuje wszystkie właściwości klasy Car. Klasa Tesla dodaje metodę o nazwie Przyśpieszyć() , który drukuje wiadomość Przyspieszenie Tesli do konsoli.

The Główny() Funkcja definiuje instancję klasy Tesla o nazwie mojaTesla i wywołuje metody Start() i Accelerate().

Dziedziczenie wielopoziomowe

Dziedziczenie wielopoziomowe polega na tym, że klasa pochodna dziedziczy po innej klasie pochodnej, która z kolei dziedziczy po klasie bazowej.

Na przykład, Poniższy kod C# demonstruje dziedziczenie i zastępowanie metod w hierarchii klas.

przy użyciu Systemu ;
klasa Zwierzę
{
publiczny próżnia Jeść ( )
{
Konsola. Linia zapisu ( „Jedzenie zwierząt” ) ;
}
}
klasa Ssak : Zwierzę
{
publiczny próżnia Uruchomić ( )
{
Konsola. Linia zapisu ( „Bieganie ssaków” ) ;
}
}
klasa Pies : Ssak
{
publiczny próżnia Kora ( )
{
Konsola. Linia zapisu ( 'Szczekanie psa' ) ;
}
}
Program klasowy
{
statyczny próżnia Główny ( strunowy [ ] argumenty )
{
Pies mój Pies = nowy Pies ( ) ;
mój pies. Jeść ( ) ; // Dane wyjściowe: Jedzenie zwierząt
mój pies. Uruchomić ( ) ; // Dane wyjściowe: Biegnący ssak
mój pies. Kora ( ) ; // Dane wyjściowe: Szczekanie psa
}
}

Tutaj Pies jest klasą pochodną, ​​która dziedziczy z Ssak , który z kolei dziedziczy po Zwierzę . Klasa Dog ma dostęp do wszystkich właściwości, metod i zachowań ssaków i zwierząt, a także może zdefiniować własną unikalną metodę Kora() .

The Klasa zwierząt jest klasą bazową i ma metodę o nazwie Jeść() , co po prostu wyświetla komunikat Zjadanie zwierząt na konsoli.

The Klasa ssaków wywodzi się z klasy Animal i dodaje metodę o nazwie Uruchomić() , co powoduje wypisanie na konsoli komunikatu Mammal running.

The Klasa psa wywodzi się z klasy Mammal i dodaje metodę o nazwie Kora() , co spowoduje wydrukowanie komunikatu Pies szczeka do konsoli.

Metoda Main() tworzy instancję klasy Dog o nazwie mój pies i wywołuje metody Eat(), Run() i Bark().

Zauważ, że metody Eat() i Run() nie są zdefiniowane w klasie Dog, ale są dziedziczone z jej klas nadrzędnych Zwierzę I Ssak odpowiednio. The Kora() Metoda jest zdefiniowana tylko w klasie Dog.

  Tekst
Opis generowany automatycznie

Dziedziczenie hierarchiczne

W dziedziczeniu hierarchicznym różne liczby klas pochodnych są dziedziczone tylko z jednej klasy podstawowej. Na przykład:

przy użyciu Systemu ;
kształt klasy
{
publiczny próżnia Rysować ( )
{
Konsola. Linia zapisu ( „Rysunek kształtu” ) ;
}
}
kółko klasowe : Kształt
{
publiczny próżnia Wypełnić ( )
{
Konsola. Linia zapisu ( „Wypełnienie koła” ) ;
}
}
klasa Kwadrat : Kształt
{
publiczny próżnia Kolor ( )
{
Konsola. Linia zapisu ( „Kwadrat do kolorowania” ) ;
}
}
Program klasowy
{
statyczny próżnia Główny ( strunowy [ ] argumenty )
{
Okrąg mój krąg = nowy krąg ( ) ;
mój krąg. Rysować ( ) ; // Dane wyjściowe: rysunek kształtu
mój krąg. Wypełnić ( ) ; // Dane wyjściowe: wypełniający okrąg

Kwadrat mySquare = nowy plac ( ) ;
mySquare. Rysować ( ) ; // Dane wyjściowe: rysunek kształtu
mySquare. Kolor ( ) ; // Wynik: Kolorowanie kwadratu
}
}

W powyższym kodzie oba Koło I Kwadrat są klasami pochodnymi, które dziedziczą z Kształt . Mają dostęp do metody Draw() zdefiniowanej w Shape, a także mogą definiować własne unikalne metody Fill() i Color().

Tutaj stworzyliśmy obiekt klasy Circle o nazwie mój krąg i przedmiotem Kwadrat nazwa klasy mySquare . Następnie dzwonimy do Rysować() Metoda, która jest dziedziczona z klasy Shape, na obu obiektach.

Następnie dzwonimy do Wypełnić() metoda na myCircle, która jest specyficzna dla klasy Circle, oraz metoda Kolor() metoda na mySquare, która jest specyficzna dla klasy square.

Dane wyjściowe zostaną wydrukowane na konsoli, jak poniżej:

  Tekst
Opis generowany automatycznie ze średnią pewnością

Wielokrotne dziedziczenie

Wielokrotne dziedziczenie to sytuacja, w której klasa pochodna dziedziczy z wielu klas podstawowych. Jednak język C# nie obsługuje dziedziczenia wielokrotnego. Aby osiągnąć podobną funkcjonalność, C# używa interfejsy .

Wniosek

Dziedziczenie w języku C# umożliwia klasom dziedziczenie zachowania i funkcjonalności z klas podstawowych. Korzystając z dziedziczenia, możemy ponownie wykorzystać kod i stworzyć hierarchiczny przepływ wewnątrz programu. Dzięki zrozumieniu różnych typów dziedziczenia można pisać bardziej wydajny i zorganizowany kod, który jest łatwiejszy w utrzymaniu i rozszerzaniu.