În C++, moștenirea este un proces în care un obiect dobândește automat toate proprietățile și comportamentele obiectului părinte. În acest fel, puteți reutiliza, extinde sau modifica atributele și comportamentele care sunt definite în altă clasă.
În C++, clasa care moștenește membrii unei alte clase se numește clasă derivată, iar clasa ai cărei membri sunt moșteniți se numește clasă de bază. Clasa derivată este clasa specializată pentru clasa de bază.
Avantajul moștenirii C++
Reutilizarea codului: Acum puteți reutiliza membrii clasei părinte. Deci, nu este nevoie să definiți din nou membrul. Deci este necesar mai puțin cod în clasă.
conversia șirului în json în java
Tipuri de moștenire
C++ acceptă cinci tipuri de moștenire:
- Moștenire unică
- Moștenirea multiplă
- Moștenirea ierarhică
- Moștenirea pe mai multe niveluri
- Moștenirea hibridă
Clasele derivate
O clasă derivată este definită ca o clasă derivată din clasa de bază.
cum se convertesc int în șir de caractere java
Sintaxa clasei derivate:
|_+_|În cazul de mai sus, funcția clasei derivate înlocuiește metoda clasei de bază. Prin urmare, apelul la funcția display() va apela pur și simplu funcția definită în clasa derivată. Dacă dorim să invocăm funcția de clasă de bază, putem folosi operatorul de rezoluție a clasei.
int main() { B b; b.display(); // Calling the display() function of B class. b.B :: display(); // Calling the display() function defined in B class. }
Moștenirea hibridă C++
Moștenirea hibridă este o combinație de mai mult de un tip de moștenire.
Să vedem un exemplu simplu:
#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<<>
Moștenirea ierarhică C++
Moștenirea ierarhică este definită ca procesul de derivare a mai multor clase dintr-o clasă de bază.
Sintaxa moștenirii ierarhice:
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. }
Să vedem un exemplu simplu:
in.next java
#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...\'<