Introduktion til tilsidesættelse i C ++

Overstyring i C ++ er en af ​​måderne til at opnå polymorfisme af løbetid, hvor vi ændrer opførelsen af ​​den samme metode. Generelt arver barneklasse medlemsfunktionerne og datamedlemmerne fra baseklassen. Men når vores behov er at tilsidesætte funktionaliteten i børneklassen, så er vi nødt til at bruge funktionen tilsidesættelse. Overstyring giver et privilegium til metoderne at have samme navn i både baseklasse og dens afledte klasse. Det gør det muligt for os at ændre funktionsadfærden, der findes i baseklassen, i dens afledte klasser efter vores behov.

Hvordan fungerer overstyring i C ++?

Lad os først forstå polymorfisme, før vi forstår altoverskyggende. Den bogstavelige betydning af polymorfisme er mange former, dvs. at have flere former for en bestemt ting. I et objektorienteret programmeringssprog er dette en af ​​de nyttige funktioner. I arv opnås polymorfisme ved funktion eller metodeoverskridelse, når både base og afledte klasser har den samme erklæring om medlemsfunktion, men deres definition vil være anderledes.

For at gøre dette skal vi først arve fra en klasse til den afledte klasse. Derefter skal vi give forskellige definitioner alt efter behov for en hvilken som helst af baseklassens metoder igen i den afledte klasse. Først da siges denne funktion at blive tilsidesat, og denne trin for trin-proces kaldes Funktionoverskridelse.

Lad os sige tage et scenarie, hvor vores applikation har kravet om at ændre adfærd for baseklasse-metoden i en afledt klasse, så vi bør bruge funktionen til at tilsidesætte . For at tilsidesætte en funktion i den afledte klasse, skal vi have den samme underskrift i underklassen, også funktionsnavne skal være ens i begge baser og afledte klasser. Her betyder signatur anvendelse af den samme datatype og sekvens af parametre, der skal videregives i funktionen. Hvis der ikke er behov for parametre, behøver vi ikke bruge nogen parameter i basefunktionen såvel som børnefunktion. Nedenfor har vi nogle punkter, vi skal huske på, før vi bruger altoverskyggende.

  • I C ++ -programmering vil tilsidesættelse være et eksempel på kørselstidspolymorfisme eller dynamisk polymorfisme.
  • Overstyring er kun mulig i de metoder, der findes i afledte klasser, fordi en metode tilsidesættes i den afledte klasse fra baseklassen.
  • For at opnå tilsidesættelse skal funktionerne, der findes i base- og afledte klasser, have samme navn, samme returtype og samme parametre.

Metoden, der tilsidesættes af tilsidesættelseserklæringen, kaldes den tilsidesatte basemetode. Baseklassen vil indeholde denne metode. Frisk implementering kaldet overstyringsmetode arves fra denne baseklasse. Når vi opretter et objekt for den afledte klasse og kalder medlemsfunktionen, der findes i både base- og afledte klasser, ignoreres medlemsfunktionen i baseklassen, og medlemsfunktionen for den afledte klasse opfordres.

Nedenfor er kravene til metodeoverskridelse:

  • Den første og vigtigste ting er arv, der skal være der fra base til afledt klasse, fordi funktionsoverskridelse ikke kan udføres inden for samme klasse. For at opnå dette har vi brug for en baseklasse og en afledt klasse.
  • Den omdefinerede funktion skal have nøjagtigt den samme erklæring i både base og afledte klasser. Hvad betyder det? Dette betyder, at funktionerne skal have samme navn, samme signatur og samme parameterliste.

Eksempel på tilsidesættelse

Kode

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

I ovenstående eksempel er funktion Meddelelse () tilsidesat i den afledte klasse.

Eksempel med trin

1. Lad os se på eksemplet ved hjælp af funktionen hoved () for at forstå tilsidesættelse bedre.

2. Opret en baseklasse med ethvert navn. Her bruger jeg Animal. Skriv en metode til at vise en meddelelse, der skal vises. Dette vil være vores tilsidesatte metode, som vi vil tilsidesætte i den arvede klasse. Inde i metoden skal du skrive en besked, der skal udskrives.

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

3. Opret nu endnu en klassehund. Denne gang arver vi det fra den baseklasse, som vi oprettede tidligere, dvs. dyr. For at arve bruger vi symbolet ':'.

class Dog: public Animal

4. Her erklærer vi den samme Message () -funktion til forskellige implementeringer og skriver nogle meddelelser. Sørg for, at metodens navn og underskrift i den afledte klasse stemmer overens med metodenavnet og underskriften i baseklassen.

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

5. Vi har brug for endnu en klasse for at udføre funktionaliteten for at kontrollere det altoverskyggende. Opret en klasse med ethvert navn. Inde i skriver du hovedfunktionen.

class ExecutionClass
(
int Main( )
(
)
)

6. Opret et objekt i forældreklassen og udløs funktionen vha. Klassens objekt. Dette påkalder meddelelsesmetoden, der findes i klassen Dyr.

Animal animalObject;
animalObject.Message( );

7. Opret nu objektet for den afledte klasse, og kald op Message-metoden. Dette påkalder meddelelsesmetoden i hundeklassen.

Dog dogObject;
dogObject.Message( );

8. Hvad bliver output fra denne kode? Kan du gætte det? Dette er som vist nedenfor.

Produktion:

9. I ovenstående eksempel kalder vi funktionen med samme navn og signatur ved hjælp af et objekt oprettet til afledt og baseklasse separat. I begge tilfælde kaldes forskellige versioner af funktionen til basen og afledt klasse.

Konklusion

I denne artikel forstod vi metoden tilsidesættelse i C ++, behovet for metodeoverskridelse, eksempler på den virkelige verden af ​​det altoverskyggende princip, måden at opnå det og eksemplet på tilsidesættelse ved hjælp af koden. Vi kan konkludere, at tilsidesættelse er en af ​​de nyttige funktioner i polymorfisme i C ++, hvor vi kan ændre opførselen til baseklasse-metoden i den afledte klasse.

Anbefalede artikler

Dette er en guide til tilsidesættelse i C ++. Her diskuterer vi, hvordan Overriding i C ++ fungerer, et simpelt eksempel med forskellige trin. Du kan også gennemgå vores andre relaterede artikler for at lære mere-

  1. Arrays i C ++
  2. Introduktion til C ++
  3. C ++ -kommandoer
  4. Kopier konstruktør i C ++
  5. Vejledning til tilsidesættelse i OOP
  6. Overstyring i Java

Kategori: