logo

سي ++ الميراث

في لغة C++، الوراثة هي عملية يكتسب فيها كائن واحد جميع خصائص وسلوكيات الكائن الأصلي تلقائيًا. وبهذه الطريقة، يمكنك إعادة استخدام أو توسيع أو تعديل السمات والسلوكيات التي تم تعريفها في فئة أخرى.

في لغة C++، تسمى الفئة التي ترث أعضاء فئة أخرى بالفئة المشتقة والفئة التي يرث أعضاؤها تسمى الفئة الأساسية. الفئة المشتقة هي الفئة المتخصصة للفئة الأساسية.


الاستفادة من الميراث C ++

إمكانية إعادة استخدام الكود: يمكنك الآن إعادة استخدام أعضاء صفك الأصلي. لذلك، ليست هناك حاجة لتعريف العضو مرة أخرى. لذلك مطلوب رمز أقل في الفصل.

كود جافا الزائف

أنواع الميراث

تدعم لغة C++ خمسة أنواع من الوراثة:

  • ميراث واحد
  • تعدد الميراث
  • الميراث الهرمي
  • وراثة متعددة المستويات
  • الميراث الهجين
سي ++ الميراث

الفئات المشتقة

يتم تعريف الفئة المشتقة على أنها الفئة المشتقة من الفئة الأساسية.

تاريخ الآلة الكاتبة

بناء جملة الفئة المشتقة:

|_+_|

في الحالة المذكورة أعلاه، تتجاوز وظيفة الفئة المشتقة طريقة الفئة الأساسية. ولذلك، فإن استدعاء وظيفة العرض () سوف يستدعي ببساطة الوظيفة المحددة في الفئة المشتقة. إذا أردنا استدعاء دالة الفئة الأساسية، فيمكننا استخدام عامل دقة الفئة.

 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++ الميراث الهجين

الميراث الهجين هو مزيج من أكثر من نوع واحد من الميراث.

سي ++ الميراث

دعونا نرى مثالا بسيطا:

 #include using namespace std; class A { protected: int a; public: void get_a() { std::cout &lt;&lt; &apos;Enter the value of &apos;a&apos; : &apos; &lt;&gt;a; } }; class B : public A { protected: int b; public: void get_b() { std::cout &lt;&lt; &apos;Enter the value of &apos;b&apos; : &apos; &lt;&gt;b; } }; class C { protected: int c; public: void get_c() { std::cout &lt;&lt; &apos;Enter the value of c is : &apos; &lt;&gt;c; } }; class D : public B, public C { protected: int d; public: void mul() { get_a(); get_b(); get_c(); std::cout &lt;&lt; &apos;Multiplication of a,b,c is : &apos; &lt; <a*b*c<< std::endl; } }; int main() { d d; d.mul(); return 0; < pre> <p>Output:</p> <pre> Enter the value of &apos;a&apos; : 10 Enter the value of &apos;b&apos; : 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&apos;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 &lt;&lt; &apos;Enter the length and breadth of a rectangle: &apos; &lt;&gt;length&gt;&gt;breadth; r.get_data(length,breadth); int m = r.rect_area(); std::cout &lt;&lt; &apos;Area of the rectangle is : &apos; &lt;<m<< std::endl; std::cout << \\'enter the base and height of triangle: \\' <>base&gt;&gt;height; t.get_data(base,height); float n = t.triangle_area(); std::cout &lt;<\\'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++ الميراث الهرمي

يتم تعريف الميراث الهرمي على أنه عملية اشتقاق أكثر من فئة واحدة من فئة أساسية.

سي ++ الميراث

بناء جملة الميراث الهرمي:

 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. } 

دعونا نرى مثالا بسيطا:

مقارنة بالسلاسل في 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 &lt;&lt; &apos;Enter the length and breadth of a rectangle: &apos; &lt;&gt;length&gt;&gt;breadth; r.get_data(length,breadth); int m = r.rect_area(); std::cout &lt;&lt; &apos;Area of the rectangle is : &apos; &lt;<m<< std::endl; std::cout << \\'enter the base and height of triangle: \\' <>base&gt;&gt;height; t.get_data(base,height); float n = t.triangle_area(); std::cout &lt;<\\'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<<>