Inleiding tot negeren in C ++

Overschrijven in C ++ is een van de manieren om runtime-polymorfisme te bereiken, waarbij we het gedrag van dezelfde methode wijzigen. Over het algemeen neemt de onderliggende klasse de ledenfuncties en gegevensleden over van de basisklasse. Maar als het onze bedoeling is om de functionaliteit in de onderliggende klasse te negeren, moeten we de functie negeren gebruiken. Overschrijven biedt een privilege aan de methoden om dezelfde naam te hebben in zowel de basisklasse als de afgeleide klasse. Het stelt ons in staat om het functiegedrag dat aanwezig is in de basisklasse, in de afgeleide klassen, te wijzigen volgens onze behoefte.

Hoe werkt Overriding in C ++?

Laten we eerst het polymorfisme begrijpen voordat we het negeren begrijpen. De letterlijke betekenis van polymorfisme is vele vormen, dwz met meerdere vormen van één bepaald ding. In een objectgeoriënteerde programmeertaal is dit een van de handige functies. In overerving wordt polymorfisme bereikt, door functie of methode te negeren, wanneer zowel basis- als afgeleide klassen dezelfde verklaring van lidfunctie hebben, maar hun definitie zal anders zijn.

Om dit te doen, moeten we eerst van een klasse erven in de afgeleide klasse. Vervolgens moeten we verschillende definities bieden naargelang de behoefte, voor een van de methoden van de basisklasse opnieuw binnen de afgeleide klasse. Alleen dan wordt van die functie gezegd dat deze wordt opgeheven en dit stapsgewijze proces wordt Functie opheffen genoemd.

Laten we zeggen dat we een scenario nemen waarin onze applicatie de vereiste heeft om het gedrag van de base class-methode in een afgeleide klasse te wijzigen, dan moeten we de functie van negeren gebruiken . Om een ​​functie in de afgeleide klasse te overschrijven, moeten we dezelfde handtekening in onderliggende klasse hebben, ook moeten functienamen hetzelfde zijn in zowel basen als afgeleide klassen. Hier betekent handtekening het gebruik van hetzelfde gegevenstype en dezelfde reeks parameters die in de functie moeten worden doorgegeven. Als er geen parameters nodig zijn, hoeven we geen parameters in de basisfunctie of de onderliggende functie te gebruiken. Hieronder hebben we enkele punten die we in gedachten moeten houden voordat we negeren gebruiken.

  • In C ++ -programmering is het negeren een voorbeeld van Run time polymorphism of Dynamic Polymorphism.
  • Overschrijven is alleen mogelijk in de methoden die aanwezig zijn in afgeleide klassen, omdat een methode wordt overschreven in de afgeleide klasse van de basisklasse.
  • Om het overschrijven te bereiken, moeten de functies die aanwezig zijn in basis- en afgeleide klassen dezelfde naam, hetzelfde retourtype en dezelfde parameters hebben.

De methode die wordt overschreven door de overschrijvingsdeclaratie, wordt de overschreven basismethode genoemd. De basisklasse zal deze methode bevatten. Nieuwe implementatie genaamd, override methode is overgenomen van deze basisklasse. Wanneer we een object van de afgeleide klasse maken en de lidfunctie aanroepen die in zowel basis- als afgeleide klassen bestaat, wordt de lidfunctie van de basisklasse genegeerd en wordt de lidfunctie van de afgeleide klasse aangeroepen.

Hieronder staan ​​de vereisten voor het negeren van methoden:

  • Het eerste en belangrijkste is dat Overerving er moet zijn van basis tot afgeleide klasse, omdat het overschrijven van functies niet binnen dezelfde klasse kan worden uitgevoerd. Om dit te bereiken hebben we een basisklasse en een afgeleide klasse nodig.
  • De opnieuw gedefinieerde functie moet exact dezelfde declaratie hebben in zowel basis- als afgeleide klassen. Wat betekent dat? Dit betekent dat de functies dezelfde naam, dezelfde handtekening en dezelfde parameterlijst moeten hebben.

Voorbeeld van overschrijven

Code

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

In het bovenstaande voorbeeld wordt de functie Message () overschreven in de afgeleide klasse.

Voorbeeld met stappen

1. Laten we het voorbeeld bekijken met de functie main () om het negeren beter te begrijpen.

2. Maak een basisklasse met een willekeurige naam. Hier gebruik ik Animal. Schrijf een methode om een ​​bericht weer te geven om weer te geven. Dit wordt onze overschreven methode die we in de overgenomen klasse zullen overschrijven. Schrijf in de methode een bericht om af te drukken.

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

3. Creëer nu nog een klasse hond. Deze keer zullen we het erven van de basisklasse die we eerder hebben gemaakt, namelijk Animal. Om te erven gebruiken we het ':' symbool.

class Dog: public Animal

4. Hier verklaren we dezelfde Message () -functie voor verschillende implementatie en schrijven we een bericht. Zorg ervoor dat de methode naam en handtekening in de afgeleide klasse overeenkomen met de methode naam en handtekening in de basisklasse.

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

5. We hebben nog een klasse nodig om de functionaliteit uit te voeren om het overschrijven te controleren. Maak een klas met een willekeurige naam. Daarbinnen schrijft de hoofdfunctie.

class ExecutionClass
(
int Main( )
(
)
)

6. Maak een object van de bovenliggende klasse en activeer de functie met behulp van het object van de klasse. Dit roept de Message-methode op die aanwezig is in de klasse Animal.

Animal animalObject;
animalObject.Message( );

7. Maak nu het object van de afgeleide klasse en roep de Message-methode aan. Dit roept de Message-methode van de Dog-klasse op.

Dog dogObject;
dogObject.Message( );

8. Wat zal de output van deze code zijn? Kun je het raden? Dit is zoals hieronder getoond.

Output:

9. In het bovenstaande voorbeeld roepen we de functie aan met dezelfde naam en handtekening, waarbij we een object gebruiken dat afzonderlijk is gemaakt voor afgeleide en basisklasse. In beide gevallen worden verschillende versies van de functie aangeroepen voor de basis- en afgeleide klasse.

Conclusie

In dit artikel begrepen we de methode die de override in C ++, de noodzaak van de methode override, real-world voorbeelden van het overridingprincipe, de manier om het te bereiken en het voorbeeld van overriding met behulp van de code. We kunnen concluderen dat opheffen een van de nuttige kenmerken is in polymorfisme in C ++, waarin we het gedrag van de basismethode-methode in de afgeleide klasse kunnen wijzigen.

Aanbevolen artikelen

Dit is een gids voor opheffen in C ++. Hier bespreken we hoe Overriding in C ++ werkt, een eenvoudig voorbeeld met verschillende stappen. U kunt ook onze andere gerelateerde artikelen doornemen voor meer informatie-

  1. Arrays in C ++
  2. Introductie tot C ++
  3. C ++ Commando's
  4. Kopieer Constructor in C ++
  5. Handleiding voor opheffen in OOP's
  6. Overschrijven in Java