Hur man använder arv i C#

Hur Man Anvander Arv I C



När vi skriver kod i ett objektorienterat programmeringsspråk kan vi stöta på situationer där vi behöver återanvända befintlig kod i en ny klass eller lägga till ytterligare funktionalitet till en befintlig klass. I sådana fall kommer arvet väl till pass. Arv i objektorienterad programmering tillåter klasser att ärva egenskaperna och beteendet hos en annan klass. Den här artikeln täcker användningen av arv i C# och dess olika typer.

Innehållsförteckning

Vad är arv i C#

Hur fungerar arv i C#







Typer av arv i C#



Slutsats



Vad är arv i C#

I C# som använder arv kan en klass ta eller ärva egenskaperna och metoderna för en annan klass. Med andra ord tillåter det skapandet av en ny klass baserad på en befintlig klass, som är känd som basklassen eller superklassen. En klass som bildas efter att ha tagit egenskaperna för en basklass kallas en härledd klass eller underklass.





Denna härledda klass i C# tar inte bara basklassens egenskaper utan kan också lägga till sina egna unika funktioner.

Hur fungerar arv i C#

I C# uppnås arv genom användning av kolon (:) symbol. Basklassens namn definieras efter kolon, och det specificeras av den härledda klassen.



Följande är syntaxen för att skapa en härledd klass som tar egenskaper från basklassen:

klass DerivedClass : BaseClass

{

// härledda klassmedlemmar

}

Här i den här koden, DerivedClass är namnet på den härledda klassen, och BaseClass är namnet på basklassen. De : symbolen indikerar att DerivedClass ärver från BaseClass. Medlemmarna i DerivedClass kan komma åt BaseClass-medlemmar, förutsatt att de inte är privata.

Typer av arv i C#

C# stöder fyra typer av arv: enkel, multi-level, hierarkisk och multipel arv. Låt oss titta på varje typ.

Enstaka arv

Enstaka arv är den vanligaste typen av arv, där en härledd klass tar eller ärver egenskaper av endast en enda basklass.

Till exempel, den givna koden förklarar klasshierarki och demonstrerar arvsbegrepp.

använder System ;

använder System ;
klass bil
{
offentlig tomhet Start ( )
{
Trösta. Skrivlinje ( 'Bil startad' ) ;
}
}
klass Tesla : Bil
{
offentlig tomhet Accelerera ( )
{
Trösta. Skrivlinje ( 'Tesla accelererar' ) ;
}
}
klass program
{
statisk tomhet Main ( sträng [ ] args )
{
Tesla myTesla = nya Tesla ( ) ;
minTesla. Start ( ) ; // Utgång: Bil startad
minTesla. Accelerera ( ) ; // Utgång: Tesla accelererar
}
}

I ovanstående kod är Bilklass är basklassen och har en metod som kallas Start() , som helt enkelt skriver ut meddelandet Bilen startade till konsolen.

De Tesla klass härstammar från klassen Bil, och den tar alla egenskaper i klassen Bil. Tesla-klassen lägger till en metod som heter Accelerera() , som skriver ut meddelandet Tesla accelererar till konsolen.

De Main() funktionen definierar en instans av Tesla-klassen som kallas minTesla och anropar dess Start()- och Accelerate()-metoder.

Arv på flera nivåer

Flernivåarv är där en härledd klass ärver från en annan härledd klass, som i sin tur ärver från en basklass.

Till exempel, följande C#-kod visar arv och metodöverstyrning i en klasshierarki.

använder System ;
klass Djur
{
offentlig tomhet Äta ( )
{
Trösta. Skrivlinje ( 'Djuräter' ) ;
}
}
klass däggdjur : Djur
{
offentlig tomhet Springa ( )
{
Trösta. Skrivlinje ( 'Däggdjur springer' ) ;
}
}
klass hund : Däggdjur
{
offentlig tomhet Bark ( )
{
Trösta. Skrivlinje ( 'Hund-skall' ) ;
}
}
klass program
{
statisk tomhet Main ( sträng [ ] args )
{
Dog myDog = ny hund ( ) ;
min hund. Äta ( ) ; // Resultat: Djurätande
min hund. Springa ( ) ; // Utgång: Däggdjur springer
min hund. Bark ( ) ; // Output: Hund skällande
}
}

Här Hund är en härledd klass som ärver från Däggdjur , som i sin tur ärver från Djur . Hundklassen har tillgång till alla egenskaper, metoder och beteenden hos däggdjur och djur, och kan också definiera sin egen unika metod Bark() .

De Djurklass är basklassen och har en metod som kallas Äta() , som helt enkelt skriver ut meddelandet Animal eating till konsolen.

De Däggdjursklass härrör från klassen Animal och lägger till en metod som heter Springa() , som skriver ut meddelandet Mammal running till konsolen.

De Hundklass härrör från klassen Mammal och lägger till en metod som kallas Bark() , som skriver ut meddelandet Hund skällande till konsolen.

Metoden Main() skapar en instans av klassen Dog som kallas min hund och anropar dess Eat(), Run() och Bark() metoder.

Observera att metoderna Eat() och Run() inte är definierade i klassen Dog, utan ärvs från dess överordnade klasser Djur och Däggdjur , respektive. De Bark() Metoden är endast definierad i klassen Dog.

  Text
Beskrivning genereras automatiskt

Hierarkiskt arv

I hierarkiskt arv ärvs olika antal härledda klasser från endast en basklass. Till exempel:

använder System ;
klass Form
{
offentlig tomhet Dra ( )
{
Trösta. Skrivlinje ( 'Rita form' ) ;
}
}
klass Cirkel : Form
{
offentlig tomhet Fylla ( )
{
Trösta. Skrivlinje ( 'Fyllande cirkel' ) ;
}
}
klass Square : Form
{
offentlig tomhet Färg ( )
{
Trösta. Skrivlinje ( 'Färga kvadrat' ) ;
}
}
klass program
{
statisk tomhet Main ( sträng [ ] args )
{
Circle myCircle = ny cirkel ( ) ;
min cirkel. Dra ( ) ; // Output: Rita form
min cirkel. Fylla ( ) ; // Utgång: Fyllande cirkel

Square mySquare = nya torg ( ) ;
mySquare. Dra ( ) ; // Output: Rita form
mySquare. Färg ( ) ; // Output: Färgläggande fyrkant
}
}

I ovanstående kod, båda Cirkel och Fyrkant är härledda klasser som ärver från Form . De har tillgång till metoden Draw() definierad i Shape och kan även definiera sina egna unika metoder Fill() och Color().

Här skapade vi ett objekt av klassen Circle som heter min cirkel och ett föremål för Fyrkant klass namngiven mySquare . Vi ringer sedan till Dra() metod, som ärvs från Shape-klassen, på båda objekten.

Därefter kallar vi Fylla() metod på myCircle, som är specifik för Circle-klassen, och Färg() metod på mySquare, som är specifik för kvadratklassen.

Utdata kommer att skrivas ut till konsolen enligt nedan:

  Text
Beskrivning genereras automatiskt med medium tillförsikt

Multipelt arv

Multipelt arv är där en härledd klass ärver från flera basklasser. C# stöder dock inte multipelt arv. För att uppnå liknande funktionalitet använder C# gränssnitt .

Slutsats

Arv i C# tillåter klasser att ärva beteende och funktionalitet från basklasser. Genom att använda arv kan vi återanvända kod och skapa ett hierarkiskt flöde inuti programmet. Genom att förstå de olika typerna av arv kan man skriva mer effektiv och organiserad kod som är lättare att underhålla och utöka.