前言
- 个人邮箱:zhangyixu02@gmail.com
- 本文主要是给一些做嵌入式软件开发,并且非计科的朋友做科普。使用 C 语言理解封装、继承、多态等概念。
正文
- 基类:最基础的结构体或函数。
- 派生类:基类的继承+自己的特性。
- 封装:将数据和操作数据的函数结合在一起,隐藏内部实现细节,仅对外提供接口,提高了代码的安全性和可维护性。例如
Animal
结构体中,有数据 name
,还有 speak
操作方法。 - 继承:
Dog
结构体可以包含 Animal
结构体的成员,从此拥有 name
和 speak
这两个成员变量。 - 多态:通过函数指针实现,给函数指针赋不同的值,用户调用相同的方法
myDog->base.speak();
能够产生不一样的效果。
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int name;
void (*speak)(void);
} Animal;
void animal_speak(void)
{
printf("Animal sound\n");
}
typedef struct
{
Animal base;
int age;
} Dog;
void dog_speak(void)
{
printf("Woof!\n");
}
Dog* create_dog()
{
Dog* dog = (Dog*)malloc(sizeof(Dog));
dog->base.speak = dog_speak;
return dog;
}
void destroy_dog(Dog* dog) {
free(dog);
}
int main() {
Dog* myDog = create_dog();
myDog->base.speak();
destroy_dog(myDog);
return 0;
}