[ C++ ] Tính đa kế thừa – Multiple Inheritance trong C++



Trong ngôn ngữ lập trình hướng đối tượng, tính kế thừa chia làm hai loại: ngôn ngữ đơn thừa kế và ngôn ngữ đa thừa kế.


Tính đơn thừa kế: là tính chất cho phép một lớp chỉ có thể kế thừa từ một lớp cơ sở duy nhất. Nếu bạn muốn sử dụng tính năng đa thừa kế trong ngôn ngữ lập trình loại này, bạn có thể cần phải sử dụng đến khái niệm giao diện interface. Ngôn ngữ đơn thừa kế tiêu biểu gồm: Java, C#, Delphi.

Tính đa thừa kế: là tính chất cho phép một lớp có thể kế thừa từ nhiều lớp cơ sở. Ngôn ngữ đa thừa kế tiêu biểu gồm: C++.

Ví dụ khai báo tính đa kế thừa trong C++ tuân theo cú pháp sau      

// đa kế thừa
class D: public B, public C
Giải thích: Lớp D gọi là lớp con; lớp B, C (các lớp cơ sở).
// đơn kế thừa
class B: public A
class C: public A
 
Giải thích: Lớp B gọi là lớp con; lớp A (lớp cơ sở). Lớp C gọi là lớp con; lớp A (lớp cơ sở).  


Hình vẽ minh họa

Ví dụ [code Tubor C++]
#include<iostream.h>
#include<conio.h> 
class A{
   int a;
  public:
   void showA(void);
};
class B{
   int b;
  public:
   void showB(void);
};
class C: public A, public B{
  int c;
 public:
  void showC(void);
};
void A::showA(void){
  cout<<"\n I’m A";
}
void B::showB(void){
  cout<<"\n I’m B";
}
void C::showC(void){
  cout<<"\n I’m C";
}
      // ham main=========
int main()
{
  C c;
  c.showA();
  c.showB();
  c.showC();
  return 0;
}
Kết quả:
I’m A 
I’m B
I’m C

Giải thích: trong ví dụ này, lớp C kế thừa từ lớp A và lớp B. Khi ta khai báo c là đối tượng của lớp C, do tính kế thừa nên đối tượng c chứa không chỉ thành viên của lớp c, mà còn có các thành viên của lớp A và B.

[Tải Code Chương trình tại đây (Lưu ý: Sau 5s, click Bỏ qua quảng cáo - Skin Ad)]

(TxT)

0 nhận xét:

Cảm ơn bạn đã quan tâm tới bài viết này!