Ako používať dedičnosť v C#

Ako Pouzivat Dedicnost V C



Pri písaní kódu v objektovo orientovanom programovacom jazyku sa môžeme stretnúť so situáciami, kedy potrebujeme opätovne použiť existujúci kód v novej triede alebo pridať ďalšie funkcie do existujúcej triedy. V takýchto prípadoch príde vhod dedičstvo. Dedičnosť v objektovo orientovanom programovaní umožňuje triedam zdediť vlastnosti a správanie inej triedy. Tento článok sa zaoberá použitím dedičnosti v C# a jej rôznych typoch.

Obsah

Čo je dedičnosť v C#

Ako funguje dedičnosť v C#







Typy dedenia v C#



Záver



Čo je dedičnosť v C#

V C# pomocou dedičnosti môže jedna trieda prevziať alebo zdediť vlastnosti a metódy inej triedy. Inými slovami, umožňuje vytvorenie novej triedy založenej na existujúcej triede, ktorá je známa ako základná trieda alebo super trieda. Zavolá sa trieda vytvorená po prevzatí vlastností základnej triedy odvodená trieda alebo podtrieda.





Táto odvodená trieda v C# nielenže preberá vlastnosti základnej triedy, ale môže pridať aj svoje vlastné jedinečné vlastnosti.

Ako funguje dedičnosť v C#

V C# sa dedičnosť dosahuje použitím dvojbodky (:) symbol. Názov základnej triedy je definovaný za dvojbodkou a je určený odvodenou triedou.



Nasleduje syntax na vytvorenie odvodenej triedy, ktorá preberá vlastnosti zo základnej triedy:

trieda DerivedClass : Základná trieda

{

// odvodené členy triedy

}

Tu v tomto kóde Odvodená trieda je názov odvodenej triedy a Základná trieda je názov základnej triedy. The : symbol označuje, že DerivedClass dedí z BaseClass. Členovia DerivedClass majú prístup k členom BaseClass za predpokladu, že nie sú súkromní.

Typy dedenia v C#

C# podporuje štyri typy dedenia: jednoduché, viacúrovňové, hierarchické a viacnásobné dedičstvo. Pozrime sa na každý typ.

Jediné dedičstvo

Jednoduchá dedičnosť je najbežnejším typom dedičnosti, kde odvodená trieda preberá alebo zdedí vlastnosti iba jednej základnej triedy.

Napríklad, daný kód vysvetľuje hierarchiu tried a demonštruje koncepty dedičnosti.

pomocou systému ;

pomocou systému ;
triedy Auto
{
verejnosti neplatné Štart ( )
{
Konzola. WriteLine ( 'Auto naštartované' ) ;
}
}
triedy Tesla : Auto
{
verejnosti neplatné Urýchliť ( )
{
Konzola. WriteLine ( 'Tesla sa zrýchľuje' ) ;
}
}
triedny program
{
statické neplatné Hlavná ( reťazec [ ] args )
{
Tesla myTesla = nová Tesla ( ) ;
myTesla. Štart ( ) ; // Výstup: Auto naštartované
myTesla. Urýchliť ( ) ; // Výstup: Tesla zrýchľuje
}
}

Vo vyššie uvedenom kóde je Trieda auta je základná trieda a má metódu tzv Štart() , ktorý správu jednoducho vytlačí Auto naštartované do konzoly.

The triedy Tesla je odvodený od triedy Car a preberá všetky vlastnosti triedy Car. Trieda Tesla pridáva metódu tzv Urýchliť() , ktorý správu vytlačí Tesla zrýchľuje do konzoly.

The Hlavná() funkcia definuje inštanciu triedy Tesla tzv myTesla a volá svoje metódy Start() a Accelerate().

Viacúrovňová dedičnosť

Viacúrovňové dedičstvo je tam, kde odvodená trieda dedí z inej odvodenej triedy, ktorá zase dedí zo základnej triedy.

Napríklad, nasledujúci kód C# demonštruje dedičnosť a prepísanie metódy v hierarchii tried.

pomocou systému ;
trieda Zviera
{
verejnosti neplatné Jedzte ( )
{
Konzola. WriteLine ( 'Jedenie zvierat' ) ;
}
}
triedy Cicavec : Zviera
{
verejnosti neplatné Bežať ( )
{
Konzola. WriteLine ( 'Cicavec beží' ) ;
}
}
trieda Pes : Cicavec
{
verejnosti neplatné Štekať ( )
{
Konzola. WriteLine ( 'Štekanie psa' ) ;
}
}
triedny program
{
statické neplatné Hlavná ( reťazec [ ] args )
{
Pes môjDog = nový pes ( ) ;
môj pes. Jedzte ( ) ; // Výstup: Jedenie zvierat
môj pes. Bežať ( ) ; // Výstup: Beží cicavec
môj pes. Štekať ( ) ; // Výstup: Štekanie psa
}
}

Tu pes je odvodená trieda, ktorá dedí z Cicavec , ktorý zasa dedí z Zviera . Trieda Pes má prístup ku všetkým vlastnostiam, metódam a správaniu cicavcov a zvierat a môže tiež definovať svoju vlastnú jedinečnú metódu Štekať() .

The Trieda zvierat je základná trieda a má metódu tzv Jesť() , ktorý jednoducho vytlačí na konzolu správu Animal eat.

The Trieda cicavcov je odvodený od triedy Animal a pridáva metódu tzv spustiť() , ktorý vytlačí správu Mammal running do konzoly.

The Trieda psov je odvodený od triedy Mammal a pridáva metódu tzv Štekať() , ktorý na konzole vytlačí správu Pes šteká.

Metóda Main() vytvorí inštanciu triedy Dog s názvom môj pes a volá svoje metódy Eat(), Run() a Bark().

Všimnite si, že metódy Eat() a Run() nie sú definované v triede Dog, ale sú zdedené z jej rodičovských tried Zviera a Cicavec , resp. The Štekať() metóda je definovaná iba v triede Dog.

  Text
Popis sa generuje automaticky

Hierarchické dedičstvo

V hierarchickej dedičnosti sa rôzne počty odvodených tried dedia iba z jednej základnej triedy. Napríklad:

pomocou systému ;
trieda Tvar
{
verejnosti neplatné Kresliť ( )
{
Konzola. WriteLine ( 'tvar kreslenia' ) ;
}
}
triedny Kruh : Tvar
{
verejnosti neplatné Vyplňte ( )
{
Konzola. WriteLine ( 'Vyplnenie kruhu' ) ;
}
}
triedy Námestie : Tvar
{
verejnosti neplatné Farba ( )
{
Konzola. WriteLine ( 'Farebný štvorec' ) ;
}
}
triedny program
{
statické neplatné Hlavná ( reťazec [ ] args )
{
Kruh myCircle = nový kruh ( ) ;
myCircle. Kresliť ( ) ; // Výstup: Kreslenie tvaru
myCircle. Vyplňte ( ) ; // Výstup: Vyplnenie kruhu

Štvorec mySquare = nové námestie ( ) ;
mySquare. Kresliť ( ) ; // Výstup: Kreslenie tvaru
mySquare. Farba ( ) ; // Výstup: Farebný štvorec
}
}

Vo vyššie uvedenom kóde oboje Kruh a Námestie sú odvodené triedy, ktoré dedia z Tvar . Majú prístup k metóde Draw() definovanej v Shape a môžu tiež definovať svoje vlastné jedinečné metódy Fill() a Color().

Tu sme vytvorili objekt triedy Circle s názvom myCircle a predmetom Námestie trieda pomenovaná mySquare . Potom zavoláme Kresliť() metóda, ktorá je zdedená z triedy Shape, na oboch objektoch.

Ďalej zavoláme Fill() metóda na myCircle, ktorá je špecifická pre triedu Circle, a Farba () metóda na mySquare, ktorá je špecifická pre štvorcovú triedu.

Výstup sa vytlačí na konzolu, ako je uvedené nižšie:

  Text
Popis sa generuje automaticky so strednou spoľahlivosťou

Viacnásobné dedičstvo

Viacnásobné dedičstvo je miesto, kde odvodená trieda dedí z viacerých základných tried. C# však nepodporuje viacnásobnú dedičnosť. Na dosiahnutie podobnej funkčnosti používa C# rozhrania .

Záver

Dedičnosť v C# umožňuje triedam dediť správanie a funkčnosť od základných tried. Pomocou dedičnosti môžeme znova použiť kód a vytvoriť hierarchický tok vo vnútri programu. Pochopením rôznych typov dedičnosti je možné napísať efektívnejší a organizovanejší kód, ktorý sa ľahšie udržiava a rozširuje.