Jak používat dědičnost v C#

Jak Pouzivat Dedicnost V C



Při psaní kódu v objektově orientovaném programovacím jazyce se můžeme setkat se situacemi, kdy potřebujeme znovu použít existující kód v nové třídě nebo přidat další funkcionalitu do existující třídy. V takových případech přijde vhod dědictví. Dědičnost v objektově orientovaném programování umožňuje třídám zdědit vlastnosti a chování jiné třídy. Tento článek pojednává o použití dědičnosti v C# a jejích různých typech.

Obsah

Co je dědičnost v C#

Jak funguje dědičnost v C#







Typy dědičnosti v C#



Závěr



Co je dědičnost v C#

V C# pomocí dědičnosti může jedna třída převzít nebo zdědit vlastnosti a metody jiné třídy. Jinými slovy, umožňuje vytvoření nové třídy založené na existující třídě, která je známá jako základní třída nebo supertřída. Zavolá se třída vytvořená po převzetí vlastností základní třídy odvozená třída nebo podtřída.





Tato odvozená třída v C# nejen přebírá vlastnosti základní třídy, ale může také přidávat své vlastní jedinečné vlastnosti.

Jak funguje dědičnost v C#

V C# je dědičnost dosažena použitím dvojtečky (:) symbol. Název základní třídy je definován za dvojtečkou a je určen odvozenou třídou.



Následuje syntaxe pro vytvoření odvozené třídy, která přebírá vlastnosti ze základní třídy:

třídy DerivedClass : Základní třída

{

// odvozené členy třídy

}

Zde v tomto kódu, Odvozená třída je název odvozené třídy a Základní třída je název základní třídy. The : symbol označuje, že DerivedClass dědí z BaseClass. Členové DerivedClass mají přístup k členům BaseClass za předpokladu, že nejsou soukromí.

Typy dědičnosti v C#

C# podporuje čtyři typy dědičnosti: jednoduché, víceúrovňové, hierarchické a vícenásobné dědění. Podívejme se na každý typ.

Jediné dědictví

Jednoduchá dědičnost je nejběžnějším typem dědičnosti, kdy odvozená třída přebírá nebo dědí vlastnosti pouze jedné základní třídy.

Například, daný kód vysvětluje hierarchii tříd a demonstruje koncepty dědičnosti.

pomocí System ;

pomocí System ;
třída Auto
{
veřejnost prázdnota Start ( )
{
Řídicí panel. WriteLine ( 'Auto nastartováno' ) ;
}
}
třídy Tesla : Auto
{
veřejnost prázdnota Urychlit ( )
{
Řídicí panel. WriteLine ( 'Tesla zrychluje' ) ;
}
}
třídní program
{
statický prázdnota Hlavní ( tětiva [ ] argumenty )
{
Tesla myTesla = nová Tesla ( ) ;
myTesla. Start ( ) ; // Výstup: Auto nastartováno
myTesla. Urychlit ( ) ; // Výstup: Tesla zrychluje
}
}

Ve výše uvedeném kódu je Třída auta je základní třída a má nazvanou metodu Start() , který zprávu jednoduše vytiskne Auto nastartováno do konzole.

The třídy Tesla je odvozen od třídy Car a přebírá všechny vlastnosti třídy Car. Třída Tesla přidává metodu tzv Urychlit() , který zprávu vytiskne Tesla zrychluje do konzole.

The Hlavní() funkce definuje instanci třídy Tesla s názvem myTesla a volá své metody Start() a Accelerate().

Víceúrovňová dědičnost

Víceúrovňová dědičnost je situace, kdy odvozená třída dědí z jiné odvozené třídy, která zase dědí ze základní třídy.

Například, následující kód C# demonstruje dědičnost a přepsání metody v hierarchii tříd.

pomocí System ;
třída Zvíře
{
veřejnost prázdnota Jíst ( )
{
Řídicí panel. WriteLine ( 'Jezení zvířat' ) ;
}
}
třída Savec : Zvíře
{
veřejnost prázdnota Běh ( )
{
Řídicí panel. WriteLine ( 'Savec běží' ) ;
}
}
třída Pes : Savec
{
veřejnost prázdnota Kůra ( )
{
Řídicí panel. WriteLine ( 'štěkání psa' ) ;
}
}
třídní program
{
statický prázdnota Hlavní ( tětiva [ ] argumenty )
{
Pes můjDog = nový pes ( ) ;
můj pes. Jíst ( ) ; // Výstup: Požírání zvířat
můj pes. Běh ( ) ; // Výstup: Savec běží
můj pes. Kůra ( ) ; // Výstup: Psí štěkot
}
}

Tady Pes je odvozená třída, která dědí z Savec , který zase dědí z Zvíře . Třída Pes má přístup ke všem vlastnostem, metodám a chování savců a zvířat a může také definovat svou vlastní jedinečnou metodu Kůra() .

The Třída zvířat je základní třída a má nazvanou metodu Jíst() , který jednoduše vytiskne zprávu Animal eat na konzoli.

The Třída savců je odvozen od třídy Animal a přidává metodu nazvanou Běh() , která do konzole vytiskne zprávu Mammal running.

The Třída psů je odvozen od třídy Savec a přidává metodu nazvanou Kůra() , která na konzoli vytiskne zprávu Pes štěká.

Metoda Main() vytvoří instanci nazvané třídy Dog můj pes a volá své metody Eat(), Run() a Bark().

Všimněte si, že metody Eat() a Run() nejsou definovány ve třídě Dog, ale jsou zděděny z jejích nadřazených tříd. Zvíře a Savec , resp. The Kůra() metoda je definována pouze ve třídě Dog.

  Text
Popis je vygenerován automaticky

Hierarchická dědičnost

V hierarchické dědičnosti se různé počty odvozených tříd dědí pouze z jedné základní třídy. Například:

pomocí System ;
třída Tvar
{
veřejnost prázdnota Kreslit ( )
{
Řídicí panel. WriteLine ( 'tvar kreslení' ) ;
}
}
třída Kruh : Tvar
{
veřejnost prázdnota Vyplnit ( )
{
Řídicí panel. WriteLine ( 'Vyplňování kruhu' ) ;
}
}
třídy náměstí : Tvar
{
veřejnost prázdnota Barva ( )
{
Řídicí panel. WriteLine ( 'Vybarvovací čtverec' ) ;
}
}
třídní program
{
statický prázdnota Hlavní ( tětiva [ ] argumenty )
{
Kruh myCircle = nový kruh ( ) ;
myCircle. Kreslit ( ) ; // Výstup: Kreslení tvaru
myCircle. Vyplnit ( ) ; // Výstup: Vyplnění kruhu

Čtverec mySquare = nové náměstí ( ) ;
mySquare. Kreslit ( ) ; // Výstup: Kreslení tvaru
mySquare. Barva ( ) ; // Výstup: Barevný čtverec
}
}

Ve výše uvedeném kódu obojí Kruh a Náměstí jsou odvozené třídy, které dědí z Tvar . Mají přístup k metodě Draw() definované v Shape a mohou také definovat své vlastní jedinečné metody Fill() a Color().

Zde jsme vytvořili objekt třídy Circle s názvem myCircle a předmět Náměstí třída pojmenovaná mySquare . Poté zavoláme Kreslit() metoda, která je zděděna ze třídy Shape, na obou objektech.

Dále zavoláme Vyplnit() metoda na myCircle, která je specifická pro třídu Circle, a Barva() metoda na mySquare, která je specifická pro třídu square.

Výstup bude vytištěn na konzoli, jak je uvedeno níže:

  Text
Popis automaticky generován se střední spolehlivostí

Vícenásobná dědičnost

Vícenásobná dědičnost je situace, kdy odvozená třída dědí z více základních tříd. C# však nepodporuje vícenásobnou dědičnost. K dosažení podobné funkčnosti používá C# rozhraní .

Závěr

Dědičnost v C# umožňuje třídám dědit chování a funkčnost ze základních tříd. Pomocí dědičnosti můžeme znovu použít kód a vytvořit hierarchický tok uvnitř programu. Pochopením různých typů dědičnosti lze psát efektivnější a organizovanější kód, který se snadněji udržuje a rozšiřuje.