首頁 >後端開發 >C++ >如何實作C++中的多型和繼承特性?

如何實作C++中的多型和繼承特性?

WBOY
WBOY原創
2023-08-27 14:39:22549瀏覽

如何實作C++中的多型和繼承特性?

如何實作C 中的多態和繼承特性?

在C 中,多態性和繼承是兩個重要的特性,能夠提高程式碼的可讀性和可重複使用性。本文將介紹如何在C 中實現多態性和繼承特性,並提供程式碼範例。

一、繼承特性

繼承是物件導向程式設計中的基本概念之一,它可以讓我們建立新的類,並從現有的類別中繼承屬性和方法。

在C 中,使用關鍵字「class」定義一個類,透過「:」操作符來實現繼承。當建立衍生類別時,可以選擇使用公有繼承、私有繼承或保護繼承。

程式碼範例:

#include <iostream>
using namespace std;

// 基类
class Shape {
public:
    virtual float getArea() = 0; // 纯虚函数
};

// 派生类
class Rectangle : public Shape {
public:
    float width;
    float height;
    
    float getArea() {
        return width * height;
    }
};

int main() {
    Rectangle rect;
    rect.width = 10;
    rect.height = 5;
    
    float area = rect.getArea();
    cout << "矩形的面积:" << area << endl;
    
    return 0;
}

在上述程式碼中,我們建立了一個基底類別Shape,其中定義了一個純虛擬函數getArea()。然後,我們建立了一個衍生類別Rectangle,它繼承了Shape類別並實作了getArea()函數。在主函數中,我們建立了一個Rectangle對象,並計算了該矩形的面積。

二、多型特性

多型是指物件的不同表現形態,同一個函數可以根據不同物件的型別表現出不同的行為。在C 中,透過虛擬函數和基底類別的指標或引用來實現多態。

虛函數需要在基底類別中聲明,並在衍生類別中進行重寫。基底類別指標或引用指向衍生類別物件時,呼叫的是衍生類別中的函數。

程式碼範例:

#include <iostream>
using namespace std;

// 基类
class Shape {
public:
    virtual float getArea() = 0; // 纯虚函数
};

// 派生类1
class Rectangle : public Shape {
public:
    float width;
    float height;
    
    float getArea() {
        return width * height;
    }
};

// 派生类2
class Circle : public Shape {
public:
    float radius;
    
    float getArea() {
        return 3.14 * radius * radius;
    }
};

int main() {
    Rectangle rect;
    rect.width = 10;
    rect.height = 5;
    
    Circle circle;
    circle.radius = 4;
    
    Shape* shape1 = &rect; // 基类指针指向派生类对象
    Shape* shape2 = &circle; // 基类指针指向派生类对象
    
    float area1 = shape1->getArea();
    float area2 = shape2->getArea();
    
    cout << "矩形的面积:" << area1 << endl;
    cout << "圆的面积:" << area2 << endl;
    
    return 0;
}

在上述程式碼中,我們建立了兩個衍生類別Rectangle和Circle,它們都繼承自基底類別Shape,並實作了getArea()函數。在主函數中,我們使用基底類別指標shape1和shape2分別指向Rectangle和Circle對象,並透過它們呼叫getArea()函數來實現多態性。

總結:

透過繼承特性,我們可以在C 中建立具有共同屬性和方法的類,並且能夠實現程式碼的複用。透過多態特性,我們可以在基類指標或引用的情況下,根據實際物件的類型來呼叫對應的函數。這樣可以提高程式碼的靈活性和可擴充性。

以上是如何實作C++中的多型和繼承特性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn