Sissejuhatus rakenduses C ++ alistamisele

C ++ alistamine on üks viis jooksuaja polümorfismi saavutamiseks, mille käigus muudame sama meetodi käitumist. Üldiselt pärib lasteklass baasklassist liikmefunktsioonid ja andmeliikmed. Kui aga meie eesmärk on alistada lasteklassi funktsionaalsus, peame kasutama funktsiooni alistumist. Üleskirjutamine annab eelise meetoditele, millel on sama nimi nii põhiklassis kui ka sellest tuletatud klassis. See võimaldab meil vastavalt vajadusele muuta põhiklassis ja selle tuletatud klassides funktsionaalset käitumist.

Kuidas alistamine töötab C ++ -s?

Enne ülimuslikkuse mõistmist mõelgem kõigepealt polümorfismist. Polümorfismi otseses tähenduses on palju vorme, st millel on ühe konkreetse asja mitu vormi. Objektorienteeritud programmeerimiskeeles on see üks kasulikest omadustest. Pärimise korral saavutatakse polümorfism funktsiooni või meetodi puhul ülimuslikkusega, kui nii baasil kui ka tuletatud klassidel on sama liikmefunktsiooni deklaratsioon, kuid nende määratlus on erinev.

Selleks peame esmalt pärima klassist tuletatud klassiks. Seejärel peaksime esitama erinevad määratlused vastavalt vajadusele, mis tahes põhiklassi meetodi jaoks tuletatud klassis. Alles siis öeldakse, et see funktsioon on ületatud ja seda samm-sammulist protsessi nimetatakse funktsiooni alistamiseks.

Oletame, et võtame stsenaariumi, kus meie rakendusel on nõue muuta põhiklassi meetodi käitumist tuletatud klassis, siis peaksime kasutama ülekirjutamise funktsiooni . Funktsiooni tuletatud klassis alistamiseks peab lasteklassis olema sama allkiri ning ka funktsioonide nimed peaksid olema ühesugused nii aluses kui ka tuletatud klassis. Allkiri tähendab siin sama andmetüübi ja funktsioonis edastatavate parameetrite jada kasutamist. Kui parameetreid pole vaja, siis ei pea me kasutama nii põhifunktsioonis kui ka lapsefunktsioonis ühtegi parameetrit. Allpool on mõned punktid, mida peame enne ülimuslikkuse kasutamist meeles pidama.

  • C ++ programmeerimisel on alistamine näit käitusaja polümorfismist või dünaamilisest polümorfismist.
  • Ületamine on võimalik ainult tuletatud klassides esinevate meetodite puhul, kuna meetod on põhiklassist tuletatud klassis tähtsusetu.
  • Ülduslikkuse saavutamiseks peaksid põhi- ja tuletatud klassides esinevatel funktsioonidel olema sama nimi, sama tagastamise tüüp ja samad parameetrid.

Meetodit, mille alistamine on tühistatud, nimetatakse ületatud baasmeetodiks. Põhiklass sisaldab seda meetodit. Sellest põhiklassist on päritud värske rakendus nimega override meetod. Kui loome tuletatud klassi objekti ja kutsume liikmefunktsiooni, mis eksisteerib nii põhi- kui ka tuletatud klassides, siis põhiklassi liikmefunktsiooni eiratakse ja tuletatud klassi liikmefunktsioon kutsutakse esile.

Allpool on toodud nõuded meetodi ülimuslikkusele:

  • Esimene ja kõige olulisem asi on see, et pärimine peaks olema baasist tuletatud klassini, kuna funktsioonide üleandmist ei saa teha samas klassis. Selle saavutamiseks vajame põhiklassi ja tuletatud klassi.
  • Ümberdefineeritud funktsioonil peaks olema täpselt sama deklaratsioon nii põhi- kui ka tuletatud klassides. Mida see tähendab? See tähendab, et funktsioonidel peaks olema sama nimi, sama allkiri ja sama parameetrite loend.

Näide alistamisest

Kood

class Animal
(
public:
void Message ( )
(
cout << "Hello there!! I am Animal";
)
);
class Dog: public Animal
(
public:
void Message ( )
(
cout << "I am Dog!!";
)
)

Ülaltoodud näites on funktsioon Sõnum () tuletatud klassis alistatud.

Näide sammudega

1. Vaadelgem näidet, kasutades funktsiooni main (), et üle mõistmist paremini mõista.

2. Looge mis tahes nimega põhiklass. Siin ma kasutan looma. Kirjutage kuvatava teate kuvamise meetod. See on meie ülepakutud meetod, mille me pärandiklassis ümber jätame. Meetodi sees kirjutage mõni printimiseks mõeldud teade.

class Animal
(
public void Message( )
(
cout << "Hello there!! I am Animal";
)
)

3. Nüüd looge veel üks klassi koer. Seekord pärime selle baasklassilt, mille lõime varem, st Animal. Pärimiseks kasutame sümbolit::.

class Dog: public Animal

4. Siin kuulutame sama sõnumi () funktsiooni erinevaks rakendamiseks ja kirjutame mõne teate. Veenduge, et tuletatud klassi meetodi nimi ja allkiri vastaksid põhiklassi meetodi nimele ja allkirjale.

public void Message ( )
(
cout << "Hey!! I am Dog";
)

5. Peame funktsioonide täitmiseks veel ühte klassi üle kontrollima. Looge ükskõik millise nimega klass. Selle sisse kirjutage põhifunktsioon.

class ExecutionClass
(
int Main( )
(
)
)

6. Looge vanemklassi objekt ja käivitage funktsioon klassi objekti abil. Sellele tuginetakse loomaklassis kasutatavale teatemeetodile.

Animal animalObject;
animalObject.Message( );

7. Nüüd looge tuletatud klassi objekt ja helistage sõnumimeetodile. See kutsub esile koerte klassi teademeetodi.

Dog dogObject;
dogObject.Message( );

8. Milline on selle koodi väljund? Kas saate seda arvata? See on näidatud allpool.

Väljund:

9. Ülaltoodud näites kutsume funktsiooni sama nime ja allkirjaga, kasutades tuletatud ja põhiklassi jaoks loodud objekti eraldi. Mõlemal juhul kutsutakse funktsiooni erinevad versioonid baasi ja tuletatud klassi jaoks.

Järeldus

Selles artiklis saime aru meetodist C ++ ülimuslikest meetoditest, meetodi olulisuse vajalikkusest, reaalse maailma näidetest ülimuslikust põhimõttest, selle saavutamise viisist ja koodist ülekirjutamise näitest. Võib järeldada, et alistamine on üks C ++ polümorfismi kasulikest omadustest, mille abil saame muuta tuletatud klassis põhiklassi meetodi käitumist.

Soovitatavad artiklid

See on juhend C ++ alistamiseks. Siin arutleme selle üle, kuidas funktsioon Üleminek C ++-s töötab, lihtne näide erinevate sammudega. Lisateavet leiate ka meie muudest seotud artiklitest -

  1. Massiivid C ++
  2. C ++ sissejuhatus
  3. C ++ käsud
  4. Kopeeri konstruktor C ++-s
  5. OOP-ide alistamine
  6. Ülekaalus Java

Kategooria: