在C語言中,可以通過結構體和函數指針實現繼承和多態的功能。
定義一個基類結構體,包含所有子類共有的成員變量和方法。然后定義子類結構體,其中包含基類結構體作為第一個成員變量,這樣就可以實現繼承的效果。
示例代碼如下:
// 基類結構體
typedef struct {
int x;
int y;
} Base;
// 子類結構體
typedef struct {
Base base;
int z;
} Derived;
// 創建一個Derived對象
Derived obj;
obj.base.x = 1;
obj.base.y = 2;
obj.z = 3;
定義一個包含函數指針的結構體,將方法的具體實現放在不同的函數中,然后通過函數指針調用不同的方法。
示例代碼如下:
// 基類結構體
typedef struct {
void (*print)(void);
} Base;
// 具體實現方法
void base_print(void) {
printf("Base print\n");
}
// 子類結構體
typedef struct {
Base base;
} Derived;
// 具體實現方法
void derived_print(void) {
printf("Derived print\n");
}
int main() {
Derived obj;
obj.base.print = derived_print;
Base* base_ptr = (Base*)&obj;
base_ptr->print(); // 調用Derived的print方法
return 0;
}
通過以上方法,就可以在C語言中實現繼承和多態的功能。