1, 介绍
封装、继承、多态是面向对象的重要特性,有了它们再结合一些设计模式可以让我们的代码变得高内聚、低耦合,增加代码的安全性、可读性、可维护性。那么对于C语言这种面向过程的编程语言,能不能也实现封装、继承、多态,从而提升代码的质量呢?答案是显而易见的,我们在linux内核代码的学习过程中,用心分析,你会发现里面已经广泛利用C语言实现封装、继承、多态。本篇文章会带着大家分析一下,怎么用C实现这些面向对象的特性,为大家后面看代码、写出高质量的代码做铺垫。
2, 封装
封装就是把一个抽象的事物的属性和相应的操作方法打包到一个类中,通过内部的方法来改变内部状态。封装的本质是隐藏信息的过程,使对象的内部状态不被外界直接访问和修改。
封装具有如下优点:
- 提高了代码的安全性,数据只能被规定的方式访问,避免了误操作和非法访问。
- 提高了代码的复用性,相同或类似的数据类型可以被多次利用。
- 提高了代码的可维护性,当数据类型发生变化时,只需修改一个地方即可。
C语言中没有类的概念,但是可以使用结构体实现对事物的封装。封装的重要意义是,将函数(方法)和数据(属性)整合在一起,数据(属性)和数据(属性)整合在一起。这样,我们就可以通过简单的一个结构指针访问到所有的数据,操作所有的函数。
以下便是一个封装的具体例子:
#include <stdio.h>
typedef struct human
{
int age;
char sex;
void (*set_age)(struct human *p, int age);
int (*get_age)(struct human *p);
void (*set_sex)(struct human *p, char sex);
char (*get_sex)(struct human *p);
} Human;
void set_age(Human *p, int age)
{

最低0.47元/天 解锁文章
875

被折叠的 条评论
为什么被折叠?



