IT评测·应用市场-qidao123.com
标题:
用 C 语言理解封装、继承、多态
[打印本页]
作者:
莫张周刘王
时间:
2025-3-20 17:25
标题:
用 C 语言理解封装、继承、多态
前言
个人邮箱: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企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4