Chào mừng bạn đến với Selfomy Hỏi Đáp, hãy Hỏi bài tập hoặc Tham gia ngay
0 phiếu
128 lượt xem
Khang1000 trong Tin học lớp 10 bởi Phó giáo sư (31.4k điểm)

1 Câu trả lời

0 phiếu
monmon70023220 bởi Cử nhân (3.0k điểm)
### Sự khác nhau giữa kế thừa đa cấp và kế thừa đa hình trong C++

#### 1. Kế thừa đa cấp (Multilevel Inheritance)

**Khái niệm**: Kế thừa đa cấp là kiểu kế thừa trong đó một lớp dẫn xuất (derived class) kế thừa từ một lớp cơ sở (base class), và sau đó lớp dẫn xuất này lại trở thành lớp cơ sở cho một hoặc nhiều lớp dẫn xuất khác.

**Ví dụ minh họa**:

```cpp
#include <iostream>
using namespace std;

// Lớp cơ sở
class Animal {
public:
    void eat() {
        cout << "Animal eats." << endl;
    }
};

// Lớp dẫn xuất từ Animal
class Dog : public Animal {
public:
    void bark() {
        cout << "Dog barks." << endl;
    }
};

// Lớp dẫn xuất từ Dog
class Puppy : public Dog {
public:
    void weep() {
        cout << "Puppy weeps." << endl;
    }
};

int main() {
    Puppy myPuppy;
    myPuppy.eat(); // Gọi từ lớp Animal
    myPuppy.bark(); // Gọi từ lớp Dog
    myPuppy.weep(); // Gọi từ lớp Puppy

    return 0;
}
```

#### 2. Kế thừa đa hình (Polymorphism)

**Khái niệm**: Kế thừa đa hình cho phép các đối tượng thuộc các lớp khác nhau được xử lý như thể chúng thuộc cùng một lớp cơ sở. Điều này thường được thực hiện thông qua hàm ảo, cho phép gọi hàm của lớp dẫn xuất thông qua con trỏ hoặc tham chiếu của lớp cơ sở.

**Ví dụ minh họa**:

```cpp
#include <iostream>
using namespace std;

// Lớp cơ sở
class Shape {
public:
    virtual void draw() { // Hàm ảo
        cout << "Drawing a shape." << endl;
    }
};

// Lớp dẫn xuất từ Shape
class Circle : public Shape {
public:
    void draw() override { // Ghi đè hàm ảo
        cout << "Drawing a circle." << endl;
    }
};

// Lớp dẫn xuất từ Shape
class Square : public Shape {
public:
    void draw() override { // Ghi đè hàm ảo
        cout << "Drawing a square ```cpp
." << endl;
    }
};

int main() {
    Shape* shape1 = new Circle(); // Tạo đối tượng Circle
    Shape* shape2 = new Square(); // Tạo đối tượng Square

    shape1->draw(); // Gọi hàm draw của Circle
    shape2->draw(); // Gọi hàm draw của Square

    // Giải phóng bộ nhớ
    delete shape1;
    delete shape2;

    return 0;
}
```

### Tóm tắt sự khác nhau giữa kế thừa đa cấp và kế thừa đa hình

| Tiêu chí                  | Kế thừa đa cấp                           | Kế thừa đa hình                          |
|--------------------------|-----------------------------------------|-----------------------------------------|
| **Khái niệm**            | Một lớp dẫn xuất kế thừa từ một lớp cơ sở, và lớp dẫn xuất này lại trở thành lớp cơ sở cho các lớp khác. | Cho phép xử lý các đối tượng thuộc các lớp khác nhau như thể chúng thuộc cùng một lớp cơ sở. |
| **Mục đích**             | Tạo ra cấu trúc phân cấp giữa các lớp. | Cung cấp khả năng gọi hàm của lớp dẫn xuất thông qua con trỏ hoặc tham chiếu của lớp cơ sở. |
| **Sử dụng hàm ảo**       | Không nhất thiết phải sử dụng hàm ảo.  | Sử dụng hàm ảo để đạt được tính đa hình động. |

Các câu hỏi liên quan

0 phiếu
1 trả lời 106 lượt xem
0 phiếu
1 trả lời 119 lượt xem
0 phiếu
1 trả lời 182 lượt xem
0 phiếu
1 trả lời 179 lượt xem
0 phiếu
1 trả lời 68 lượt xem
0 phiếu
1 trả lời 119 lượt xem
Trình bày khái niệm về kiểm soát truy cập (access specifiers) trong C++. Nêu sự khác nhau giữa public, private và protected.
đã hỏi 23 tháng 10, 2024 trong Tin học lớp 10 bởi Khang1000 Phó giáo sư (31.4k điểm)
0 phiếu
3 câu trả lời 318 lượt xem
Mô tả cách hoạt động của tính kế thừa (inheritance) trong C++. Giải thích các loại kế thừa và ưu nhược điểm của từng loại.
đã hỏi 31 tháng 10, 2024 trong Tin học lớp 10 bởi Khang1000 Phó giáo sư (31.4k điểm)
0 phiếu
1 trả lời 97 lượt xem

HOT 1 giờ qua

  1. trannhat900trannhat900

    52948 Điểm

  2. phamngoctienpy1987844phamngoctienpy1987844

    50728 Điểm

  3. vxh2k9850vxh2k9850

    35980 Điểm

  4. Nqoc_bakaNqoc_baka

    34614 Điểm

Phần thưởng hằng tháng
Hạng 1: 200.000 đồng
Hạng 2: 100.000 đồng
Hạng 3: 50.000 đồng
Hạng 4: 20.000 đồng
Phần thưởng bao gồm: mã giảm giá Shopee, Nhà Sách Phương Nam, thẻ cào cùng nhiều phần quà hấp dẫn khác sẽ dành cho những bạn tích cực nhất của tháng. Xem tại đây
Bảng xếp hạng cập nhật 30 phút một lần
...