In C++ ist Vererbung ein Prozess, bei dem ein Objekt automatisch alle Eigenschaften und Verhaltensweisen seines übergeordneten Objekts übernimmt. Auf diese Weise können Sie die in anderen Klassen definierten Attribute und Verhaltensweisen wiederverwenden, erweitern oder ändern.
In C++ wird die Klasse, die die Mitglieder einer anderen Klasse erbt, abgeleitete Klasse und die Klasse, deren Mitglieder geerbt werden, Basisklasse genannt. Die abgeleitete Klasse ist die spezialisierte Klasse für die Basisklasse.
Vorteil der C++-Vererbung
Wiederverwendbarkeit des Codes: Jetzt können Sie die Mitglieder Ihrer übergeordneten Klasse wiederverwenden. Es besteht also keine Notwendigkeit, das Mitglied erneut zu definieren. Daher ist in der Klasse weniger Code erforderlich.
ändern Spalte Oracle hinzufügen
Arten der Vererbung
C++ unterstützt fünf Arten der Vererbung:
- Einzelvererbung
- Mehrfachvererbung
- Hierarchische Vererbung
- Mehrstufige Vererbung
- Hybride Vererbung
Abgeleitete Klassen
Eine abgeleitete Klasse ist als die von der Basisklasse abgeleitete Klasse definiert.
Java-Ersatz
Die Syntax der abgeleiteten Klasse:
|_+_|Im obigen Fall überschreibt die Funktion der abgeleiteten Klasse die Methode der Basisklasse. Daher ruft der Aufruf der Funktion display() einfach die in der abgeleiteten Klasse definierte Funktion auf. Wenn wir die Basisklassenfunktion aufrufen möchten, können wir den Klassenauflösungsoperator verwenden.
int main() { B b; b.display(); // Calling the display() function of B class. b.B :: display(); // Calling the display() function defined in B class. }
C++-Hybridvererbung
Hybride Vererbung ist eine Kombination aus mehr als einer Vererbungsart.
Sehen wir uns ein einfaches Beispiel an:
#include using namespace std; class A { protected: int a; public: void get_a() { std::cout << 'Enter the value of 'a' : ' <>a; } }; class B : public A { protected: int b; public: void get_b() { std::cout << 'Enter the value of 'b' : ' <>b; } }; class C { protected: int c; public: void get_c() { std::cout << 'Enter the value of c is : ' <>c; } }; class D : public B, public C { protected: int d; public: void mul() { get_a(); get_b(); get_c(); std::cout << 'Multiplication of a,b,c is : ' < <a*b*c<< std::endl; } }; int main() { d d; d.mul(); return 0; < pre> <p>Output:</p> <pre> Enter the value of 'a' : 10 Enter the value of 'b' : 20 Enter the value of c is : 30 Multiplication of a,b,c is : 6000 </pre> <h2>C++ Hierarchical Inheritance</h2> <p>Hierarchical inheritance is defined as the process of deriving more than one class from a base class.</p> <img src="//techcodeview.com/img/c-tutorial/62/c-inheritance-7.webp" alt="C++ Inheritance"> <p> <strong>Syntax of Hierarchical inheritance:</strong> </p> <pre> class A { // body of the class A. } class B : public A { // body of class B. } class C : public A { // body of class C. } class D : public A { // body of class D. } </pre> <p>Let's see a simple example:</p> <pre> #include using namespace std; class Shape // Declaration of base class. { public: int a; int b; void get_data(int n,int m) { a= n; b = m; } }; class Rectangle : public Shape // inheriting Shape class { public: int rect_area() { int result = a*b; return result; } }; class Triangle : public Shape // inheriting Shape class { public: int triangle_area() { float result = 0.5*a*b; return result; } }; int main() { Rectangle r; Triangle t; int length,breadth,base,height; std::cout << 'Enter the length and breadth of a rectangle: ' <>length>>breadth; r.get_data(length,breadth); int m = r.rect_area(); std::cout << 'Area of the rectangle is : ' <<m<< std::endl; std::cout << \\'enter the base and height of triangle: \\' <>base>>height; t.get_data(base,height); float n = t.triangle_area(); std::cout <<\\'area of the triangle is : \\' << n<<std::endl; return 0; } < pre> <p>Output:</p> <pre> Enter the length and breadth of a rectangle: 23 20 Area of the rectangle is : 460 Enter the base and height of the triangle: 2 5 Area of the triangle is : 5 </pre></\\'area></m<<></pre></a*b*c<<>
C++ Hierarchische Vererbung
Unter hierarchischer Vererbung versteht man den Prozess der Ableitung mehrerer Klassen von einer Basisklasse.
Syntax der hierarchischen Vererbung:
class A { // body of the class A. } class B : public A { // body of class B. } class C : public A { // body of class C. } class D : public A { // body of class D. }
Sehen wir uns ein einfaches Beispiel an:
Shell-Skript ausführbar machen
#include using namespace std; class Shape // Declaration of base class. { public: int a; int b; void get_data(int n,int m) { a= n; b = m; } }; class Rectangle : public Shape // inheriting Shape class { public: int rect_area() { int result = a*b; return result; } }; class Triangle : public Shape // inheriting Shape class { public: int triangle_area() { float result = 0.5*a*b; return result; } }; int main() { Rectangle r; Triangle t; int length,breadth,base,height; std::cout << 'Enter the length and breadth of a rectangle: ' <>length>>breadth; r.get_data(length,breadth); int m = r.rect_area(); std::cout << 'Area of the rectangle is : ' <<m<< std::endl; std::cout << \\'enter the base and height of triangle: \\' <>base>>height; t.get_data(base,height); float n = t.triangle_area(); std::cout <<\\'area of the triangle is : \\' << n<<std::endl; return 0; } < pre> <p>Output:</p> <pre> Enter the length and breadth of a rectangle: 23 20 Area of the rectangle is : 460 Enter the base and height of the triangle: 2 5 Area of the triangle is : 5 </pre></\\'area></m<<>\\'area>\'eating...\'<