Kuidas kasutada pärimist C#-s

Kuidas Kasutada Parimist C S



Objektorienteeritud programmeerimiskeeles koodi kirjutades võime kokku puutuda olukordadega, kus peame olemasolevat koodi uues klassis uuesti kasutama või olemasolevale klassile lisafunktsionaalsust lisama. Sellistel juhtudel tuleb pärand kasuks. Pärimine objektorienteeritud programmeerimisel võimaldab klassidel pärida teise klassi omadusi ja käitumist. See artikkel käsitleb pärimise kasutamist C#-s ja selle erinevaid tüüpe.

Sisukord

Mis on pärimine C#-s

Kuidas pärimine C#-s töötab







Pärimise tüübid C#-s



Järeldus



Mis on pärimine C#-s

Pärimist kasutavas C#-s võib üks klass võtta või pärida teise klassi atribuute ja meetodeid. Teisisõnu võimaldab see luua uue klassi, mis põhineb olemasoleval klassil, mida nimetatakse baasklassiks või superklassiks. Klassi, mis moodustub pärast baasklassi omaduste võtmist, nimetatakse tuletatud klass või alamklass.





See tuletatud klass C#-s ei võta mitte ainult põhiklassi omadusi, vaid võib lisada ka oma ainulaadseid funktsioone.

Kuidas pärimine C#-s töötab

C# puhul saavutatakse pärand käärsoole kasutamise kaudu (:) sümbol. Põhiklassi nimi on määratletud pärast koolonit ja selle määrab tuletatud klass.



Järgmine on süntaks tuletatud klassi loomiseks, mis võtab baasklassi atribuudid:

klass TuletatudClass : Põhiklass

{

// tuletatud klassi liikmed

}

Siin selles koodis TuletatudClass on tuletatud klassi nimi ja Põhiklass on baasklassi nimi. The : sümbol näitab, et DerivedClass pärib BaseClassilt. DerivedClassi liikmed pääsevad juurde BaseClassi liikmetele, kui nad pole privaatsed.

Pärimise tüübid C#-s

C# toetab nelja tüüpi pärimist: ühe-, mitmetasandiline, hierarhiline ja mitmekordne pärimine. Vaatame iga tüüpi.

Üksik pärand

Üksikpärimine on kõige levinum pärimise tüüp, kus tuletatud klass võtab või pärib ainult ühe põhiklassi omadused.

Näiteks, antud kood selgitab klassihierarhiat ja demonstreerib pärimiskontseptsioone.

süsteemi kasutades ;

süsteemi kasutades ;
klassi Auto
{
avalik tühine Alusta ( )
{
konsool. WriteLine ( 'Auto läks käima' ) ;
}
}
klassi Tesla : Auto
{
avalik tühine Kiirendada ( )
{
konsool. WriteLine ( 'Tesla kiirendab' ) ;
}
}
klassi programm
{
staatiline tühine Peamine ( string [ ] args )
{
Tesla myTesla = uus Tesla ( ) ;
minuTesla. Alusta ( ) ; // Väljund: auto käivitati
minuTesla. Kiirendada ( ) ; // Väljund: Tesla kiirendab
}
}

Ülaltoodud koodis on Autode klass on baasklass ja sellel on meetod nimega Start() , mis lihtsalt prindib sõnumi Auto läks käima konsooli juurde.

The Tesla klass on tuletatud autode klassist ja võtab kõik autoklassi omadused. Tesla klass lisab meetodi nimega Kiirenda () , mis prindib sõnumi Tesla kiirendab konsooli juurde.

The Peamine() funktsioon määratleb kutsutud Tesla klassi eksemplari minuTesla ja kutsub selle meetodeid Start() ja Accelerate().

Mitmetasandiline pärand

Mitmetasandiline pärimine on olukord, kus tuletatud klass pärib teiselt tuletatud klassilt, mis omakorda pärib baasklassilt.

Näiteks, järgmine C# kood demonstreerib pärimist ja meetodi alistamist klassi hierarhias.

süsteemi kasutades ;
klassi loom
{
avalik tühine Sööma ( )
{
konsool. WriteLine ( 'Loomade söömine' ) ;
}
}
klassi imetaja : Loom
{
avalik tühine Jookse ( )
{
konsool. WriteLine ( 'Imetajate jooksmine' ) ;
}
}
klassi Koer : Imetaja
{
avalik tühine koor ( )
{
konsool. WriteLine ( 'Koera haukumine' ) ;
}
}
klassi programm
{
staatiline tühine Peamine ( string [ ] args )
{
Koer myDog = uus Koer ( ) ;
minu koer. Sööma ( ) ; // Väljund: loomade söömine
minu koer. Jookse ( ) ; // Väljund: imetaja jooksmine
minu koer. koor ( ) ; // Väljund: koera haukumine
}
}

Siin Koer on tuletatud klass, mis pärib Imetaja , mis omakorda pärib alates Loom . Koerte klassil on juurdepääs kõikidele imetajate ja loomade omadustele, meetoditele ja käitumisele ning ta saab määratleda ka oma ainulaadse meetodi. koor () .

The Loomade klass on baasklass ja sellel on meetod nimega Sööma() , mis prindib konsooli lihtsalt teate Loomade söömine.

The Imetajate klass on tuletatud Animal klassist ja lisab meetodi nimega Käivita () , mis prindib konsooli jooksva teate Mammal.

The Koerte klass on tuletatud imetajate klassist ja lisab meetodi nimega koor () , mis prindib konsooli teate Koera haukumine.

Meetod Main() loob Dog klassi eksemplari nimega minu koer ja kutsub oma meetodeid Eat(), Run() ja Bark().

Pange tähele, et meetodid Eat() ja Run() pole klassis Koer määratletud, vaid on päritud selle ülemklassidest Loom ja Imetaja , vastavalt. The koor () meetod on määratletud ainult klassis Koer.

  Tekst
Kirjeldus genereeritakse automaatselt

Hierarhiline pärand

Hierarhilise pärimise korral päritakse erinev arv tuletatud klasse ainult ühest põhiklassist. Näiteks:

süsteemi kasutades ;
klass Kuju
{
avalik tühine Joonista ( )
{
konsool. WriteLine ( 'Joonis kuju' ) ;
}
}
klassi Ring : Kuju
{
avalik tühine Täida ( )
{
konsool. WriteLine ( 'Ringi täitmine' ) ;
}
}
klassi väljak : Kuju
{
avalik tühine Värv ( )
{
konsool. WriteLine ( 'Ruudu värvimine' ) ;
}
}
klassi programm
{
staatiline tühine Peamine ( string [ ] args )
{
Ringi minuCircle = uus ring ( ) ;
myCircle. Joonista ( ) ; // Väljund: joonise kujund
myCircle. Täida ( ) ; // Väljund: ringi täitmine

Ruut mySquare = uus väljak ( ) ;
mySquare. Joonista ( ) ; // Väljund: joonise kujund
mySquare. Värv ( ) ; // Väljund: ruudu värvimine
}
}

Ülaltoodud koodis mõlemad Ring ja Ruut on tuletatud klassid, mis pärivad Kuju . Neil on juurdepääs rakenduses Shape määratletud meetodile Draw() ning nad saavad määrata ka oma ainulaadsed meetodid Fill() ja Color().

Siin lõime klassi Circle objekti nimega myCircle ja objektiks Ruut klass nimega mySquare . Seejärel helistame Joonista () meetod, mis on päritud klassist Shape, mõlemal objektil.

Järgmisena kutsume Täida () meetod myCircle'is, mis on spetsiifiline Circle klassile, ja Värv () meetod mySquare'is, mis on spetsiifiline ruuduklassile.

Väljund prinditakse konsooli järgmiselt:

  Tekst
Kirjeldus genereeritakse automaatselt keskmise usaldusväärsusega

Mitu pärand

Mitmikpärimine on olukord, kus tuletatud klass pärib mitmest põhiklassist. C# aga ei toeta mitmikpärimist. Sarnase funktsionaalsuse saavutamiseks kasutab C# liidesed .

Järeldus

C# pärimine võimaldab klassidel pärida põhiklassidelt käitumist ja funktsionaalsust. Pärimise abil saame koodi uuesti kasutada ja luua programmi sees hierarhilise voo. Mõistes erinevaid päranditüüpe, saab kirjutada tõhusama ja organiseeritud koodi, mida on lihtsam hooldada ja laiendada.