C语言是怎样实现封装、继承、多态的?
2016-09-07 10:55
579 查看
我们都知道封装、继承、多态是c++面向对象中的基本特征。C语言是面向过程的语言,自身没有这些特性,那如何使用C语言来模拟C++的封装、继承、多态等面向对象的基本特征。下面就要讨论一下封装、继承、多态等面向对象在c语言中是如何实现的。
一、封装
封装:C++中的封装是利用public,protected、private来进行实现的,来隐藏一些不想让别人能够看到的一些东西,只留一些接口给用户进行使用,C语言中有结构体(struct),可以实现封装和隐藏。
为了隐藏一个类的具体实现,一般是一个公开的头文件,一个私有头文件,私有头文件中定义实现的细节,公开头文件中定义开放给客户和其他程序员的接口和公共数据。封装性的意义在于,函数和数据是绑在一起的,数据和数据是绑在一起的。这样就可以通过简单的一个结构指针访问到所有的数据,遍历所有的函数。
二、继承
C++的继承主要是可以在基类的基础上能够增添新有的功能,子类可以拥有父类的所有行为,同时也能够将原有的行为进行更改,在设计C语言继承性的时候,我们需要做的就是把基础数据放在继承的结构的首位置即可。这样数据的访问就不会存在问题。
三、多态
多态,就是说用同一的接口代码处理不同的数据。比如说,一个通用的结构也不清楚是什么数据,什么类型的处理函数?我们在处理时只需要调用函数就可以了,剩下的事情我们不需要管,因为不同的接口会有不同的函数去处理。
typedef struct _play
{
void* pData; //未知类型的数据
void (*start_play)(struct _play* pPlay);
}Play;
一、封装
封装:C++中的封装是利用public,protected、private来进行实现的,来隐藏一些不想让别人能够看到的一些东西,只留一些接口给用户进行使用,C语言中有结构体(struct),可以实现封装和隐藏。
为了隐藏一个类的具体实现,一般是一个公开的头文件,一个私有头文件,私有头文件中定义实现的细节,公开头文件中定义开放给客户和其他程序员的接口和公共数据。封装性的意义在于,函数和数据是绑在一起的,数据和数据是绑在一起的。这样就可以通过简单的一个结构指针访问到所有的数据,遍历所有的函数。
struct _Data; typedef void (*process)(struct _Data* pData); //结构体指针 typedef struct _Data //数据和数据进行绑定 { int value; process pProcess; }Data;
二、继承
C++的继承主要是可以在基类的基础上能够增添新有的功能,子类可以拥有父类的所有行为,同时也能够将原有的行为进行更改,在设计C语言继承性的时候,我们需要做的就是把基础数据放在继承的结构的首位置即可。这样数据的访问就不会存在问题。
typedef struct _parent //基础数据 { int data_parent; }Parent; typedef struct _Child { struct _parent parent; //基础数据放于继承结构的首位置 int data_child; }Child;
三、多态
多态,就是说用同一的接口代码处理不同的数据。比如说,一个通用的结构也不清楚是什么数据,什么类型的处理函数?我们在处理时只需要调用函数就可以了,剩下的事情我们不需要管,因为不同的接口会有不同的函数去处理。
typedef struct _play
{
void* pData; //未知类型的数据
void (*start_play)(struct _play* pPlay);
}Play;
相关文章推荐
- C语言实现封装、继承和多态
- C语言实现封装、继承和多态
- 如何用C语言实现C++的基本特性:封装、继承、多态
- C语言实现封装、继承和多态
- C语言实现封装、继承和多态
- C语言实现封装、继承和多态
- C语言实现封装、继承和多态
- C语言实现C++的封装继承与多态
- C语言也可以“面向对象”—— C语言实现封装、继承和多态
- C语言实现封装、继承和多态
- C语言实现封装、继承和多态
- C语言实现封装、继承和多态
- 【转】C语言实现C++面向对象的封装、继承、多态机制
- 软件设计本质论(Essential Design) —白话面向对象 (转注:关于c语言实现封装继承多态的一堆博文)
- c语言实现封装,继承和多态
- c语言实现封装,继承和多态
- 用C语言实现c++的封装、继承、多态
- C语言实现封装、继承和多态
- 用c语言实现面向对象的封装继承和多态
- c语言实现封装,继承和多态