Sådan bruger du arv i C#

Sadan Bruger Du Arv I C



Mens vi skriver kode i et objektorienteret programmeringssprog, kan vi støde på situationer, hvor vi skal genbruge eksisterende kode i en ny klasse eller tilføje yderligere funktionalitet til en eksisterende klasse. I sådanne tilfælde kommer arven godt med. Nedarvning i objektorienteret programmering giver klasser mulighed for at arve egenskaber og adfærd fra en anden klasse. Denne artikel dækker brugen af ​​arv i C# og dens forskellige typer.

Indholdsfortegnelse

Hvad er arv i C#

Hvordan virker arv i C#







Typer af arv i C#



Konklusion



Hvad er arv i C#

I C# ved hjælp af arv, kan en klasse tage eller arve egenskaberne og metoderne fra en anden klasse. Med andre ord tillader det oprettelsen af ​​en ny klasse baseret på en eksisterende klasse, som er kendt som basisklassen eller superklassen. En klasse dannet efter at have taget egenskaberne for en basisklasse kaldes en afledt klasse eller underklasse.





Denne afledte klasse i C# tager ikke kun egenskaber fra basisklassen, men kan også tilføje sine egne unikke funktioner.

Hvordan virker arv i C#

I C# opnås arv ved brug af tyktarmen (:) symbol. Basisklassenavnet er defineret efter kolon, og det er specificeret af den afledte klasse.



Følgende er syntaksen til at skabe en afledt klasse, der tager egenskaber fra basisklassen:

klasse DerivedClass : BaseClass

{

// afledte klassemedlemmer

}

Her i denne kode, Afledt klasse er navnet på den afledte klasse, og BaseClass er navnet på basisklassen. Det : symbol angiver, at DerivedClass arver fra BaseClass. Medlemmerne af DerivedClass kan få adgang til BaseClass-medlemmer, forudsat at de ikke er private.

Typer af arv i C#

C# understøtter fire typer af arv: enkelt, multi-level, hierarkisk og multipel arv. Lad os se på hver type.

Enkelt Arv

Enkeltarv er den mest almindelige arvetype, hvor en afledt klasse kun tager eller arver egenskaber af en enkelt basisklasse.

For eksempel, den givne kode forklarer klassehierarki og demonstrerer arvekoncepter.

ved hjælp af System ;

ved hjælp af System ;
klasse bil
{
offentlig ugyldig Start ( )
{
Konsol. WriteLine ( 'Bil startet' ) ;
}
}
klasse Tesla : Bil
{
offentlig ugyldig Fremskynde ( )
{
Konsol. WriteLine ( 'Tesla accelererer' ) ;
}
}
klasses program
{
statisk ugyldig Hoved ( snor [ ] args )
{
Tesla myTesla = ny Tesla ( ) ;
minTesla. Start ( ) ; // Udgang: Bil startet
minTesla. Fremskynde ( ) ; // Output: Tesla accelererer
}
}

I ovenstående kode er Bilklasse er basisklassen og har en metode kaldet Start() , som blot udskriver beskeden Bil startet til konsollen.

Det Tesla klasse er afledt af bilklassen, og den tager alle egenskaber fra bilklassen. Tesla-klassen tilføjer en metode kaldet Fremskynde() , som udskriver beskeden Tesla accelererer til konsollen.

Det Main() funktion definerer en forekomst af Tesla-klassen kaldet minTesla og kalder dens Start() og Accelerate() metoder.

Arv på flere niveauer

Multi-level nedarvning er, hvor en afledt klasse arver fra en anden afledt klasse, som igen arver fra en basisklasse.

For eksempel, følgende C#-kode demonstrerer arv og metodetilsidesættelse i et klassehierarki.

ved hjælp af System ;
klasse Dyr
{
offentlig ugyldig Spise ( )
{
Konsol. WriteLine ( 'Dyrespisning' ) ;
}
}
klasse Pattedyr : Dyr
{
offentlig ugyldig Løb ( )
{
Konsol. WriteLine ( 'Patedyr løber' ) ;
}
}
klasse hund : Pattedyr
{
offentlig ugyldig Bark ( )
{
Konsol. WriteLine ( 'Hund gøer' ) ;
}
}
klasses program
{
statisk ugyldig Hoved ( snor [ ] args )
{
Dog myDog = ny hund ( ) ;
min hund. Spise ( ) ; // Output: Dyrespisning
min hund. Løb ( ) ; // Output: Pattedyr kører
min hund. Bark ( ) ; // Output: Hunde gøen
}
}

Her Hund er en afledt klasse, der arver fra Pattedyr , som igen arver fra Dyr . Hundeklassen har adgang til alle pattedyrs og dyrs egenskaber, metoder og adfærd og kan også definere sin egen unikke metode Bark() .

Det Dyreklasse er basisklassen og har en metode kaldet Spise() , som blot udskriver beskeden Animal eating til konsollen.

Det Pattedyr klasse er afledt af klassen Animal og tilføjer en metode kaldet Løb() , som udskriver beskeden Pattedyr kører til konsollen.

Det Hunde klasse er afledt af Mammal-klassen og tilføjer en metode kaldet Bark() , som udskriver beskeden Dog barking til konsollen.

Main()-metoden opretter en instans af klassen Dog kaldet min hund og kalder dens Eat(), Run() og Bark() metoder.

Bemærk, at metoderne Eat() og Run() ikke er defineret i Dog-klassen, men er nedarvet fra dens overordnede klasser Dyr og Pattedyr , henholdsvis. Det Bark() metode er kun defineret i hundeklassen.

  Tekst
Beskrivelse genereret automatisk

Hierarkisk arv

I hierarkisk nedarvning nedarves forskellige antal afledte klasser fra kun én basisklasse. For eksempel:

ved hjælp af System ;
klasse Form
{
offentlig ugyldig Tegne ( )
{
Konsol. WriteLine ( 'Tegnende form' ) ;
}
}
klasse Cirkel : Form
{
offentlig ugyldig Fylde ( )
{
Konsol. WriteLine ( 'Udfylde cirkel' ) ;
}
}
klasse Square : Form
{
offentlig ugyldig Farve ( )
{
Konsol. WriteLine ( 'Farvelægning firkant' ) ;
}
}
klasses program
{
statisk ugyldig Hoved ( snor [ ] args )
{
Cirkel minCirkel = ny cirkel ( ) ;
min Cirkel. Tegne ( ) ; // Output: Tegning form
min Cirkel. Fylde ( ) ; // Output: Udfyldningscirkel

Square mySquare = ny plads ( ) ;
mySquare. Tegne ( ) ; // Output: Tegning form
mySquare. Farve ( ) ; // Output: Farvelægningsfirkant
}
}

I ovenstående kode, begge Cirkel og Firkant er afledte klasser, der arver fra Form . De har adgang til Draw()-metoden defineret i Shape og kan også definere deres egne unikke metoder Fill() og Color().

Her lavede vi et objekt af Circle-klassen ved navn min Cirkel og et objekt af Firkant klasse navngivet mySquare . Så ringer vi til Tegne() metode, som er nedarvet fra Shape-klassen, på begge objekter.

Dernæst kalder vi Fylde() metode på myCircle, som er specifik for Circle-klassen, og Farve() metode på mySquare, som er specifik for kvadratklassen.

Outputtet vil blive udskrevet til konsollen som nedenfor:

  Tekst
Beskrivelse genereret automatisk med medium selvtillid

Multipel arv

Multipel nedarvning er, hvor en afledt klasse arver fra flere basisklasser. C# understøtter dog ikke multipel nedarvning. For at opnå lignende funktionalitet, bruger C# grænseflader .

Konklusion

Nedarvning i C# giver klasser mulighed for at arve adfærd og funktionalitet fra basisklasser. Ved hjælp af arv kan vi genbruge kode og skabe et hierarkisk flow inde i programmet. Ved at forstå de forskellige typer af arv, kan man skrive mere effektiv og organiseret kode, der er nemmere at vedligeholde og udvide.