Chuyển đến nội dung chính

[ 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)

BÀI ĐỌC NHIỀU

[Java] Hướng dẫn lập trình Java với NetBean [Clip hướng dẫn]

[Đồ họa trong C\C++] Sử dụng các hàm đồ họa thông dụng trong C\C++ [C\C++]

[ C++ ] Tính đa hình, phương thức ảo, lớp trừu tượng trong C++ [Lập trình hướng đối tượng với C++]

[ Sort ] Thuật toán Heap-Sort [Code C++]

[Algorithm] Thuật toán Đệ quy và một số bài toán Đệ quy cơ bản

[Assembly] Tính tổng 2 số nguyên nhỏ hơn 10 [Lập trình hợp ngữ]

[Assembly] Hướng dẫn sử dụng Emu8086 [Lập trình hợp ngữ]

Bài tập +đáp án Lý thuyết đồ họa máy tính

[Thuật toán đồ thị / code C++] Thuật toán Dijkstra tìm đường đi ngắn nhất trên đồ thị G

[ C++ ] Kế thừa trong C++ [Lập trình hướng đối tượng với C++]