Alles, was Sie über Vererbung in C ++ wissen müssen



In diesem Artikel erhalten Sie detaillierte und umfassende Kenntnisse über die Vererbung in C ++, die verschiedenen Typen und deren Implementierung.

C ++ ist eine objektorientierte Sprache. Datenabstraktion, Polymorphismus, Kapselung und Vererbung sind die Eckpfeiler von OOP. In diesem Beitrag werden wir verstehen, was Vererbung ist. Vererbungstypen in C ++ und alle damit verbundenen Konzepte von Grund auf neu. Am Ende werden wir uns auch mit dem Nachteil dieses leistungsstarken Konzepts befassen und versuchen, es zu lösen.

Was ist Vererbung in C ++?

Vererbung ist eines der leistungsfähigsten und am weitesten verbreiteten Konzepte in C ++ oder einer anderen objektorientierten Sprache. Um dieses Konzept zu verstehen, sind einige Kenntnisse über Klassen und Objekte erforderlich. Mit Inheritance können wir eine Klasse erstellen, die aus allgemeinen Methoden und Attributen besteht. Diese Klasse kann von anderen Klassen geerbt werden, die spezifischere Methoden enthalten.





Vererbung in C ++

Auf diese Weise müssen wir nicht immer wieder dieselben Funktionen schreiben, was Zeit spart und die Lesbarkeit von Code erhöht.



Syntax:

Klasse abgeleitet_Klasse: Zugriffstyp Basisklasse {// Klassenkörper}

Basisklasse: Die Klasse, die aus allen allgemeinen Methoden und Attributen besteht, die von anderen Klassen gemeinsam genutzt werden können, um die Lesbarkeit des Codes zu verbessern, wird als Basisklasse bezeichnet.

wie man ein Array von Objekten erstellt

Abgeleitete Klasse: Die Klasse, die aus spezifischeren Methoden besteht und eine Klasse erbt, wird als abgeleitete Klasse bezeichnet. Eine abgeleitete Klasse kann auch eine Basisklasse für eine andere abgeleitete Klasse sein.



Wenn wir eine Klasse XYZ mit einigen Attributen und Methoden erstellen. Jetzt hat ein Schüler einige andere Attribute, aber es enthält auch die Elemente der XYZ-Klasse, und das gilt auch für eine Fakultätsklasse. Sehen wir uns ein Diagramm an:

Der Student und die Fakultätsklasse erben also von XYZ.

Zugriffsspezifizierer- Wir haben verstanden, wie eine Klasse eine andere Klasse erben kann. Einige Leute könnten jedoch sagen, dass es sich um eine unsichere Methode handelt, da alle Attribute und Methoden der Basisklasse oder der übergeordneten Klasse mit der untergeordneten Klasse oder der abgeleiteten Klasse geteilt werden. Zum Beispiel, wenn eine Klasse 'Bank' von der Klasse 'Kunden' und 'Investoren' geerbt wird. Attribute der Klasse 'Bank' wie 'Tresorkennwort', andere kundenbezogene Informationen und private Daten werden mit der Klasse 'Kunden' und der Klasse 'Investoren' geteilt, was unsicher ist.

Um das obige Problem zu lösen, verwendet C ++ Zugriffsspezifizierer, um den Zugriff von Basisklassenattributen auf die abgeleitete Klasse zu beschränken. In C ++ gibt es insgesamt drei Arten von Zugriffsspezifizierern

  1. Öffentlichkeit
  2. Privat
  3. Geschützt

Die folgende Tabelle gibt Ihnen einen guten Überblick darüber, auf welche Art von Daten von abgeleiteten Klassen gemäß verschiedenen Zugriffsspezifizierern zugegriffen werden kann.

Zugriffsspezifizierer Öffentliche Daten Private Daten Geschützte Daten
Privat Nicht geerbtNicht geerbtNicht geerbt
Geschützt Geschützt Privat Geschützt
Öffentlichkeit Öffentlichkeit Privat Geschützt

Einzelvererbung

Einzelvererbung kann als einfache Vanille-Vererbungsform betrachtet werden. Bei der Einzelvererbung erbt eine einzelne Klasse von einer Basisklasse.

#include using namespace std class Zug {int Anzahl der Räder int Anzahl der Trainer public: void Traininfo (int n, int m) {Anzahl der Räder = n Anzahl der Trainer = m} void showinfo () {cout<Dieser Fall der Vererbung wird als mehrstufige Vererbung bezeichnet. Die Klasse zwischen der ersten und der letzten Klasse wird auch als Zwischenbasisklasse bezeichnet.Was denkst du, kann die letzte Klasse Mitglieder der ersten Klasse erben? Ja, kann es

#include using namespace std class Zuerst {protected: int a public: void getinfofirst (int x) {a = x} void showinfofirst () {std :: cout<< 'Value of a = ' < 

Ausgabe:

Wert von a = 10

Wert von b = 20

Wert von c = 30

Was ist das Span-Tag in HTML

Wert von d = 50

Hierarchische Vererbung

Bestimmte Probleme können nicht mit Hilfe der Vererbung auf einer oder mehreren Ebenen gelöst werden. Bei der hierarchischen Vererbung erben mehr als eine Klasse von einer einzelnen Basisklasse.

#include using namespace std class College {public: College () {cout<< 'We are in class College' << endl } } class Student: public College { } class Faculty: public College { } int main() { Student student Faculty faculty return 0 }

Ausgabe:

Wir sind in der Klasse College

Wir sind in der Klasse College

Mehrfachvererbung in C ++

Wir haben in der hierarchischen Vererbung gesehen, dass eine Basisklasse mehr als eine abgeleitete Klasse hatte. Bei der Mehrfachvererbung hat eine abgeleitete Klasse mehr als eine Basisklasse.

#include using namespace std class One {geschützt: int a public: void getinfoOne (int x) {a = x}} class Two {protected: int b public: void getinfoTwo (int y) {b = y}} class Main: public One, public Two {public: void Display () {std :: cout<< 'Value of a = ' < Zu diesem Zeitpunkt haben wir ein gutes Verständnis für alle in C ++ verwendeten Vererbungstypen. Aber warten Sie, was ist, wenn wir zwei verschiedene Arten der Vererbung verwenden möchten? Ist es möglich? Ja, es ist mit Hilfe von Hybrid Inheritance möglich. In der hybriden Vererbung kombinieren wir zwei verschiedene Arten der Vererbung. Zum Beispiel: Mehrstufige und Mehrfachvererbung, Hierarchische und Mehrfachvererbung usw.

#include using namespace std class Welt {protected: int a public: void getinfoWorld (int x) {a = x}} class Kontinent: public World {protected: int b public: void getinfoContinent (int y) {b = y}} Klasse Land {geschützt: int d public: void getinfoCountry (int m) {d = m}} Klasse Australien: public Kontinent, public Land {public: void Display () {std :: cout<< 'Value of a = ' < 

Lassen Sie uns das obige Diagramm verstehen, das uns beim Verständnis des Diamantproblems hilft. Klasse B und Klasse C erben von Klasse A, daher haben sowohl Klasse A als auch Klasse B Attribute und Methoden der Klasse A. Wenn Klasse D sowohl von Klasse B als auch von Klasse C erbt, hat Klasse D alle Attribute von Klasse B und Klasse C. Es hat auch alle Attribute der Klasse A, die sowohl von der Klasse B als auch von der Klasse C geerbt wurden. Wenn wir also ein Objekt der Klasse D erstellen und eine Methode der Klasse A aufrufen, wird eine mehrdeutige Situation erstellt und der Compiler wird von wo aus verwirrt es sollte die Methode A von Klasse B oder Klasse D klassifizieren.

wie man Strom in Java benutzt

Um diese Mehrdeutigkeit zu lösen, verwenden wir ein Konzept, das als virtuelle Basisklasse bezeichnet wird. Wenn wir eine Basisklasse zu einer virtuellen Basisklasse machen, wird nur eine Kopie dieser Klasse vererbt, unabhängig von der Anzahl der vorhandenen Pfade zwischen der virtuellen Basisklasse und einer abgeleiteten Klasse.

Klasse A {} Klasse B: virtuelles öffentliches A {} Klasse C: virtuelles öffentliches A {} Klasse D: öffentliches C, öffentliches D {}

Damit sind wir am Ende dieses Artikels zur Vererbung in C ++ angelangt. Wenn Sie mehr erfahren möchten, lesen Sie die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen. Der Java J2EE- und SOA-Schulungs- und Zertifizierungskurs von Edureka wurde entwickelt, um Sie sowohl für Kern- als auch für fortgeschrittene Java-Konzepte sowie für verschiedene Java-Frameworks wie Hibernate & Spring zu schulen.

Hast du eine Frage an uns? Bitte erwähne es im Kommentarbereich dieses Blogs und wir werden uns so schnell wie möglich bei dir melden.