Introduksjon til Overriding i C ++

Overstyring i C ++ er en av måtene å oppnå polymorfisme av løpetid, der vi endrer oppførselen til samme metode. Generelt arver barneklassen medlemsfunksjonene og datamedlemmene fra baseklassen. Men når vårt behov er å overstyre funksjonalitet i barneklassen, så må vi bruke funksjonsoverskridelse. Overstyring gir et privilegium til metodene å ha samme navn i både baseklasse og den avledede klassen. Det gjør oss i stand til å endre funksjonsatferden som er til stede i baseklassen, i dens avledede klasser i henhold til vårt behov.

Hvordan overstyring fungerer i C ++?

La oss forstå polymorfisme først før vi forstår overordnede. Den bokstavelige betydningen av polymorfisme er mange former, dvs. å ha flere former for en bestemt ting. I et objektorientert programmeringsspråk er dette en av de nyttige funksjonene. I arv oppnås polymorfisme, ved å overstyre funksjon eller metode, når både base og avledede klasser har samme erklæring om medlemsfunksjon, men deres definisjon vil være annerledes.

For å gjøre dette, må vi arve fra en klasse til den avledede klassen først. Da bør vi gi forskjellige definisjoner etter behov, for en av baseklassens metoder igjen inne i den avledede klassen. Først da sies den funksjonen å bli overstyrt, og denne trinnvise prosessen kalles Funksjon Overriding.

La oss si å ta et scenario der applikasjonen vår har krav om å endre oppførselen til baseklasse-metoden i en avledet klasse, så vi bør bruke funksjonen for å overstyre . For å overstyre en funksjon i den avledede klassen, må vi ha samme signatur i barneklasse, også funksjonsnavn skal være like i begge baser og avledede klasser. Her betyr signatur bruk av samme datatype og sekvens av parametere som skal sendes i funksjonen. Hvis det ikke er behov for parametere, trenger vi ikke bruke noen parameter i basefunksjonen så vel som barnefunksjonen. Nedenfor har vi noen punkter vi må huske på før vi bruker overstyring.

  • I C ++ -programmering vil overstyring være et eksempel på kjøretidspolymorfisme eller dynamisk polymorfisme.
  • Overstyring er bare mulig i metodene som er til stede i avledede klasser fordi en metode overstyres i den avledede klassen fra baseklassen.
  • For å oppnå overstyring, bør funksjonene som er til stede i basis- og avledede klasser ha samme navn, samme returtype og samme parametere.

Metoden som overstyres av overstyringserklæringen kalles overstyrt basemetode. Baseklassen vil inneholde denne metoden. Frisk implementering kalt overstyringsmetode arves fra denne baseklassen. Når vi oppretter et objekt av den avledede klassen og kaller medlemsfunksjonen som eksisterer i både base og avledede klasser, ignoreres medlemsfunksjonen til baseklassen og medlemsfunksjonen til den avledede klassen.

Nedenfor er kravene til metodeoverskridelse:

  • Den første og viktigste tingen er arv skal være der fra base til avledet klasse fordi funksjonsoverskridelse ikke kan gjøres innenfor samme klasse. For å oppnå dette trenger vi en baseklasse og en avledet klasse.
  • Den omdefinerte funksjonen skal ha nøyaktig samme deklarasjon i både base og avledede klasser. Hva betyr det? Dette betyr at funksjonene skal ha samme navn, samme signatur og samme parameterliste.

Eksempel på overstyring

Kode

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

I eksemplet over blir funksjonen Melding () tilsidesatt i den avledede klassen.

Eksempel med trinn

1. La oss se på eksemplet ved å bruke hovedfunksjonen () for å forstå overstyring bedre.

2. Lag en baseklasse med hvilket som helst navn. Her bruker jeg Animal. Skriv en metode for å vise en melding du vil vise. Dette vil være vår overstyrte metode som vi vil overstyre i den arvede klassen. Inne i metoden skriver du en melding du vil skrive ut.

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

3. Lag nå en hund til klasse. Denne gangen vil vi arve den fra baseklassen som vi opprettet tidligere, dvs. Animal. For å arve bruker vi symbolet ':'.

class Dog: public Animal

4. Her erklærer vi den samme Message () -funksjonen for forskjellige implementeringer og skriver noen melding. Forsikre deg om at metodenavnet og signaturen i den avledede klassen stemmer overens med metodenavnet og signaturen i grunnklassen.

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

5. Vi trenger en klasse til for å utføre funksjonaliteten for å sjekke det overstyrende. Lag en klasse med hvilket som helst navn. Inne som skriver hovedfunksjonen.

class ExecutionClass
(
int Main( )
(
)
)

6. Lag et objekt av foreldreklassen og trigg funksjonen ved å bruke objektet til klassen. Dette vil påkalle meldingsmetoden som er til stede i klassen Animal.

Animal animalObject;
animalObject.Message( );

7. Opprett nå objektet for den avledede klassen og ring meldingsmetoden. Dette vil påkalle meldingsmetoden til hundeklassen.

Dog dogObject;
dogObject.Message( );

8. Hva blir resultatet av denne koden? Kan du gjette det? Dette er som vist nedenfor.

Produksjon:

9. I eksemplet ovenfor kaller vi funksjonen med samme navn og signatur, og bruker et objekt opprettet for avledet og baseklasse hver for seg. I begge tilfeller vil forskjellige versjoner av funksjonen bli kalt for basen og avledet klasse.

Konklusjon

I denne artikkelen forsto vi metoden overstyring i C ++, behovet for metoden overstyring, virkelige eksempler på det overordnede prinsippet, måten å oppnå det og eksemplet på overstyring ved bruk av koden. Vi kan konkludere med at overstyring er en av de nyttige funksjonene i polymorfisme i C ++ der vi kan endre oppførselen til baseklasse-metoden i den avledede klassen.

Anbefalte artikler

Dette er en guide til å overstyre i C ++. Her diskuterer vi hvordan Overriding i C ++ fungerer, et enkelt eksempel med forskjellige trinn. Du kan også gå gjennom andre relaterte artikler for å lære mer-

  1. Arrays i C ++
  2. Introduksjon til C ++
  3. C ++ Kommandoer
  4. Kopier konstruktør i C ++
  5. Veiledning for overstyring i OOP
  6. Overstyrer i Java