Einführung in das Überschreiben in C ++

Das Überschreiben in C ++ ist eine der Möglichkeiten, um einen Laufzeitpolymorphismus zu erzielen, bei dem das Verhalten derselben Methode geändert wird. Im Allgemeinen erbt die untergeordnete Klasse die Elementfunktionen und Datenelemente von der Basisklasse. Wenn wir jedoch die Funktionalität in der untergeordneten Klasse überschreiben möchten, müssen wir die Funktion überschreiben. Durch das Überschreiben erhalten die Methoden die Berechtigung, sowohl in der Basisklasse als auch in der abgeleiteten Klasse denselben Namen zu haben. Es ermöglicht uns, das in der Basisklasse vorhandene Funktionsverhalten in ihren abgeleiteten Klassen entsprechend unseren Bedürfnissen zu ändern.

Wie funktioniert das Überschreiben in C ++?

Bevor wir das Überschreiben verstehen, sollten wir zuerst den Polymorphismus verstehen. Die wörtliche Bedeutung von Polymorphismus sind viele Formen, dh mehrere Formen einer bestimmten Sache. In einer objektorientierten Programmiersprache ist dies eine der nützlichen Funktionen. Bei der Vererbung wird der Polymorphismus durch Überschreiben von Funktionen oder Methoden erreicht, wenn sowohl die Basis- als auch die abgeleitete Klasse dieselbe Deklaration der Elementfunktion haben, ihre Definition jedoch unterschiedlich ist.

Dazu müssen wir zuerst von einer Klasse in die abgeleitete Klasse erben. Dann sollten wir je nach Bedarf unterschiedliche Definitionen für eine der Methoden der Basisklasse innerhalb der abgeleiteten Klasse bereitstellen. Nur dann wird diese Funktion als überschrieben bezeichnet, und dieser schrittweise Vorgang wird als Funktionsüberschreibung bezeichnet.

Nehmen wir ein Szenario an, in dem unsere Anwendung das Verhalten der Basisklassenmethode in einer abgeleiteten Klasse ändern muss. Dann sollten wir die Funktion zum Überschreiben verwenden . Um eine Funktion in der abgeleiteten Klasse zu überschreiben, müssen wir dieselbe Signatur in der untergeordneten Klasse haben, und Funktionsnamen sollten sowohl in der Basisklasse als auch in der abgeleiteten Klasse identisch sein. Signatur bedeutet hier die Verwendung des gleichen Datentyps und der gleichen Reihenfolge von Parametern, die in der Funktion übergeben werden sollen. Wenn keine Parameter erforderlich sind, müssen wir weder in der Basisfunktion noch in der untergeordneten Funktion Parameter verwenden. Nachfolgend haben wir einige Punkte, die wir berücksichtigen müssen, bevor wir das Überschreiben verwenden.

  • Bei der C ++ - Programmierung ist das Überschreiben ein Beispiel für Laufzeitpolymorphismus oder dynamischen Polymorphismus.
  • Das Überschreiben ist nur in den in abgeleiteten Klassen vorhandenen Methoden möglich, da eine Methode in der abgeleiteten Klasse von der Basisklasse überschrieben wird.
  • Um ein Überschreiben zu erreichen, sollten die in der Basisklasse und in der abgeleiteten Klasse vorhandenen Funktionen denselben Namen, denselben Rückgabetyp und dieselben Parameter haben.

Die Methode, die von der Überschreibungsdeklaration überschrieben wird, wird als überschriebene Basismethode bezeichnet. Die Basisklasse enthält diese Methode. Von dieser Basisklasse wird die neue, Override-Methode genannte Implementierung geerbt. Wenn wir ein Objekt der abgeleiteten Klasse erstellen und die Elementfunktion aufrufen, die sowohl in der Basisklasse als auch in der abgeleiteten Klasse vorhanden ist, wird die Elementfunktion der Basisklasse ignoriert und die Elementfunktion der abgeleiteten Klasse aufgerufen.

Nachfolgend sind die Anforderungen für das Überschreiben von Methoden aufgeführt:

  • Das erste und wichtigste ist, dass die Vererbung von der Basisklasse zur abgeleiteten Klasse vorhanden sein sollte, da das Überschreiben von Funktionen nicht in derselben Klasse durchgeführt werden kann. Um dies zu erreichen, benötigen wir eine Basisklasse und eine abgeleitete Klasse.
  • Die neu definierte Funktion sollte in der Basisklasse und in der abgeleiteten Klasse genau dieselbe Deklaration haben. Was bedeutet das? Dies bedeutet, dass die Funktionen denselben Namen, dieselbe Signatur und dieselbe Parameterliste haben sollten.

Beispiel für das Überschreiben

Code

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

Im obigen Beispiel wird die Funktion Message () in der abgeleiteten Klasse überschrieben.

Beispiel mit Schritten

1. Schauen wir uns das Beispiel mit der Funktion main () an, um das Überschreiben besser zu verstehen.

2. Erstellen Sie eine Basisklasse mit einem beliebigen Namen. Hier benutze ich Animal. Schreiben Sie eine Methode, um eine anzuzeigende Nachricht anzuzeigen. Dies ist unsere überschriebene Methode, die wir in der geerbten Klasse überschreiben. Schreiben Sie innerhalb der Methode eine Nachricht zum Drucken.

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

3. Erstellen Sie jetzt einen weiteren Klassenhund. Dieses Mal werden wir es von der Basisklasse erben, die wir zuvor erstellt haben, dh Animal. Zum Erben verwenden wir das ':' Symbol.

class Dog: public Animal

4. Hier deklarieren wir die gleiche Message () - Funktion für eine andere Implementierung und schreiben eine Nachricht. Stellen Sie sicher, dass der Methodenname und die Signatur in der abgeleiteten Klasse mit dem Methodennamen und der Signatur in der Basisklasse übereinstimmen.

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

5. Wir benötigen eine weitere Klasse, um die Funktionalität auszuführen und das Überschreiben zu überprüfen. Erstellen Sie eine Klasse mit einem beliebigen Namen. Darin schreiben Sie die Main-Funktion.

class ExecutionClass
(
int Main( )
(
)
)

6. Erstellen Sie ein Objekt der übergeordneten Klasse und lösen Sie die Funktion mit dem Objekt der Klasse aus. Dadurch wird die in der Animal-Klasse vorhandene Message-Methode aufgerufen.

Animal animalObject;
animalObject.Message( );

7. Erstellen Sie nun das Objekt der abgeleiteten Klasse und rufen Sie die Message-Methode auf. Dadurch wird die Message-Methode der Dog-Klasse aufgerufen.

Dog dogObject;
dogObject.Message( );

8. Wie wird dieser Code ausgegeben? Kannst du es erraten? Dies ist wie unten gezeigt.

Ausgabe:

9. Im obigen Beispiel rufen wir die Funktion mit demselben Namen und derselben Signatur auf und verwenden ein Objekt, das für die abgeleitete Klasse und die Basisklasse separat erstellt wurde. In beiden Fällen werden unterschiedliche Versionen der Funktion für die Basisklasse und die abgeleitete Klasse aufgerufen.

Fazit

In diesem Artikel wurde das Überschreiben von Methoden in C ++, die Notwendigkeit des Überschreibens von Methoden, Beispiele für das Überschreibungsprinzip in der Praxis, die Art und Weise, wie dies erreicht wird und das Überschreiben mithilfe des Codes erläutert. Wir können daraus schließen, dass das Überschreiben eine der nützlichen Funktionen des Polymorphismus in C ++ ist, mit denen wir das Verhalten der Basisklassenmethode in der abgeleiteten Klasse ändern können.

Empfohlene Artikel

Dies ist eine Anleitung zum Überschreiben in C ++. Hier diskutieren wir, wie das Überschreiben in C ++ funktioniert, ein einfaches Beispiel mit verschiedenen Schritten. Sie können auch unsere anderen verwandten Artikel durchgehen, um mehr zu erfahren.

  1. Arrays in C ++
  2. Einführung in C ++
  3. C ++ Befehle
  4. Konstruktor in C ++ kopieren
  5. Anleitung zum Überschreiben in OOPs
  6. In Java überschreiben