如何用C语言实现面向对象
2016-07-20 19:11
274 查看
C语言是一种结构化的编程语言,以模块化功能和处理过程设计为主,从而实现数据与代码分隔。面向对象的编程语言,核心是类,类用来创造对象的模板,类的三要素为:封装,继承,多态。C语言本身对面向对象的支持很弱,但可以通过一些技巧来实现,从面向对象的思想上找一些对应的实现方法。
面向对象: C语言:
类的实现 ———— 结构体
封装性
———— 一个功能一个程序
多态性
———— 函数指针
类的实现:在C语言的语法中结构体struct和类的表述最为接近。我们可以根据面向对象的思想抽象出具体事物来作为结构体struct的成员变量。
封装性:将一个函数功能写在一个.c文件里。//一个文件实现一个类,类名与文件名相同,以一个文件作为基本的编程单元。在C语言的中,我们把头文件和实现文件名以(命名空间_类名)的形式命名。然后在这个文件中定义类的struct结构体,结构体名为命名空间_类名,然后抽象出类的属性作为成员变量。然后在这个文件中定义类的方法,方法的命名规则为"命名空间_类名
_动词_名词"的形式,命名空间类似java的包名或是c++的namespace注意命名空间不用像java一样写那么长的包名,自己酌情设置,方法的第一个参数为struct结构体的指针。对于公共方法和变量在头文件中声明并用extern关键则修饰,对于私有方法和变量使用static关键字修饰,但不要在头文件中声明。对于保护变量因为暂时没找到相应的实现,暂时用公共方法和变量的方法来实现以后找到后会补充。对于类的构造函数和解析函数,我们使用定义额外两个函数表示:struct 类名 * 命名空间_类名_creat(参数列表);和void
命名空间_类名_release(struct 类名 *);
多态性:类的多态我们使用函数指针来实现。
(未完待续。。。作者还没学多少,学好了再来完善)
面向对象: C语言:
类的实现 ———— 结构体
封装性
———— 一个功能一个程序
多态性
———— 函数指针
类的实现:在C语言的语法中结构体struct和类的表述最为接近。我们可以根据面向对象的思想抽象出具体事物来作为结构体struct的成员变量。
封装性:将一个函数功能写在一个.c文件里。//一个文件实现一个类,类名与文件名相同,以一个文件作为基本的编程单元。在C语言的中,我们把头文件和实现文件名以(命名空间_类名)的形式命名。然后在这个文件中定义类的struct结构体,结构体名为命名空间_类名,然后抽象出类的属性作为成员变量。然后在这个文件中定义类的方法,方法的命名规则为"命名空间_类名
_动词_名词"的形式,命名空间类似java的包名或是c++的namespace注意命名空间不用像java一样写那么长的包名,自己酌情设置,方法的第一个参数为struct结构体的指针。对于公共方法和变量在头文件中声明并用extern关键则修饰,对于私有方法和变量使用static关键字修饰,但不要在头文件中声明。对于保护变量因为暂时没找到相应的实现,暂时用公共方法和变量的方法来实现以后找到后会补充。对于类的构造函数和解析函数,我们使用定义额外两个函数表示:struct 类名 * 命名空间_类名_creat(参数列表);和void
命名空间_类名_release(struct 类名 *);
多态性:类的多态我们使用函数指针来实现。
(未完待续。。。作者还没学多少,学好了再来完善)
相关文章推荐
- Python动态类型的学习---引用的理解
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- 土人系列AS入门教程 -- 对象篇
- PostgreSQL教程(三):表的继承和分区表详解
- C#托管堆对象实例包含内容分析
- Lua编程示例(二):面向对象、metatable对表进行扩展
- C#与.net高级编程 C#的多态介绍
- C#中面向对象编程机制之多态学习笔记
- C#实现获取不同对象中名称相同属性的方法
- 浅谈Lua的面向对象特性
- Lua面向对象之类和继承浅析
- Lua和C语言的交互详解
- 浅析Ruby中继承和消息的相关知识
- javascript asp教程第十一课--Application 对象
- JavaScript面向对象的两种书写方法以及差别
- 浅谈c# 面向对象之类与对象
- C#中的多态深入理解
- python面向对象之类成员
- Python3 面向对象概述