C语言实现面向对象
2016-07-21 21:40
197 查看
面向对象的程序设计方法使一种基于结构的分析的、以数据为中心的程序设计方法。在面向对象的程序中,活动的基本单位是对象,向对象发送消息可以激活对象的行为。所以,面向对象消息机制设计=对象+消息传递。
C语言虽然是一个面向过程的语言,它本身并没有提供的面向对象机制,但是通过合理的利用C语言提供的一些机制,可以简单的模拟出种种面向对象的基本特性。
(1)支持抽象数据类型:C语言中的结构体可以对具体的事物属性进行数据抽象。
(2)行为的封装:在结构体中只需要加入函数指针,并在使用前将其赋予具体的函数,就可以实现行为的封装。需要注意的是,这种解决办法需要在函数参数中加入一个指向结构体的本身的指针。这相当于C++中的this指针。即为在C语言结构(struct)之中放置数据和处理数据的函数式的指针就可以得到某种程度上的封装。
(3)继承:C语言的结构体是可以嵌套的,嵌套了其他的结构体的结构体就拥有了被嵌套的结构体的属性和方法。这样做,就使得C程序中的结构具有了简单的继承能力。
(4)多态:建立一个基对象,再从中衍化出派生对象,这只是在表面上实现了继承,而不是继承的目的。继承的目的在于对象操作的一般化。所谓一般化,是指一个相同的指令调用了不同的函数。这种性质称为多态。在C语言中,C语言提供了指针的强制类型转换机制。如果将一个派生对象的指针强制转换成基对象的指针,我们就可以调用基对象的函数来调用它的各种派生对象,从而实现多态的目的。由于C语言的结构体类型指针的强制转换只是对指针所指向的内存重新定义而已,所以在进行强制类型转化时必须把基对象放在派生对象结构体的第一行。
C语言虽然是一个面向过程的语言,它本身并没有提供的面向对象机制,但是通过合理的利用C语言提供的一些机制,可以简单的模拟出种种面向对象的基本特性。
(1)支持抽象数据类型:C语言中的结构体可以对具体的事物属性进行数据抽象。
(2)行为的封装:在结构体中只需要加入函数指针,并在使用前将其赋予具体的函数,就可以实现行为的封装。需要注意的是,这种解决办法需要在函数参数中加入一个指向结构体的本身的指针。这相当于C++中的this指针。即为在C语言结构(struct)之中放置数据和处理数据的函数式的指针就可以得到某种程度上的封装。
(3)继承:C语言的结构体是可以嵌套的,嵌套了其他的结构体的结构体就拥有了被嵌套的结构体的属性和方法。这样做,就使得C程序中的结构具有了简单的继承能力。
(4)多态:建立一个基对象,再从中衍化出派生对象,这只是在表面上实现了继承,而不是继承的目的。继承的目的在于对象操作的一般化。所谓一般化,是指一个相同的指令调用了不同的函数。这种性质称为多态。在C语言中,C语言提供了指针的强制类型转换机制。如果将一个派生对象的指针强制转换成基对象的指针,我们就可以调用基对象的函数来调用它的各种派生对象,从而实现多态的目的。由于C语言的结构体类型指针的强制转换只是对指针所指向的内存重新定义而已,所以在进行强制类型转化时必须把基对象放在派生对象结构体的第一行。
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua编程示例(二):面向对象、metatable对表进行扩展
- C#中面向对象编程机制之多态学习笔记
- 浅谈Lua的面向对象特性
- Lua面向对象之类和继承浅析
- Lua和C语言的交互详解
- JavaScript面向对象的两种书写方法以及差别
- 浅谈c# 面向对象之类与对象
- C#面向对象特征的具体实现及作用详解
- C# 面向对象的基本原则
- 浅谈对c# 面向对象的理解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C 语言简单加减乘除运算