Chúng tôi sẽ kết thúc chủ đề hiện tại với một ví dụ rất đơn giản về đa kế thừa (multi-inheritance). Chúng ta cần nhấn mạnh rằng việc sử dụng kỹ thuật này thường làm cho hệ thống phân cấp class dễ bị lỗi và gây hiểu nhầm.
Nói chung không dùng đa kế thừa thì tốt hơn và trong thực tế, nhiều ngôn ngữ lập trình hướng đối tượng hiện đại không cung cấp đa kế thừa (Java là một ví dụ).
Sau đây là một ví dụ rõ ràng về đa kế thừa →
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include <iostream> using namespace std; class SuperA { protected: int storage; public: void put(int val) { storage = val; } int get(void) { return storage; } }; class SuperB { protected: int safe; public: void insert(int val) { safe = val; } int takeout(void) { return safe; } }; class Sub : public SuperA, public SuperB { public: void print(void) { cout << "storage = " << storage << endl; cout << "safe = " << safe << endl; } }; int main(void) { Sub object; object.put(1); object.insert(2); object.put(object.get() + object.takeout()); object.insert(object.get() + object.takeout()); object.print(); return 0; } |
Chương trình sẽ cho ra màn hình:
1 2 |
storage = 3 safe = 5 |