前言
- 个人邮箱: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; // 继承自 Animal
- int age; // 自己的特性
- } Dog;
- // 派生类方法
- void dog_speak(void)
- {
- printf("Woof!\n");
- }
- // 创建 Dog 对象
- Dog* create_dog()
- {
- Dog* dog = (Dog*)malloc(sizeof(Dog));
- dog->base.speak = dog_speak; // 设置多态行为
- return dog;
- }
- // 销毁 Dog 对象
- void destroy_dog(Dog* dog) {
- free(dog);
- }
- int main() {
- // 创建一个 Dog 对象
- Dog* myDog = create_dog();
- // 调用多态方法
- myDog->base.speak();
- // 销毁 Dog 对象
- destroy_dog(myDog);
- return 0;
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |