C语言是如何体现面向对象的?
来源:互联网 发布:彩田内衣淘宝店 编辑:程序博客网 时间:2024/06/07 05:42
C语言是一个面向过程的程序设计语言,但是也存在一些面向对象的机制。面向对象的三个基本特征是封装、继承和多态。
① 继承:
C++可以通过类来进行继承,而C语言的继承则是通过结构体来实现的。一般有两种方法:一个是声明在结构体内,另一种是声明在结构体外。
下面是声明在结构体中的例子
typedef struct parent{ int x;}Parent;
typedef struct child{ Parent father;//继承自父类,必须要放在前面 int y;}children;
上例中,父类的实现方法定义在一个结构体中,子类需要继承父类则需要在自己的结构体中也定义一个父结构,以便自己来继承。但是这种方法有一定的局限性:访问权限没有区分,对父类的数据成员没有保护。
下面是声明在结构体外的例子:
声明在结构体外的有点在于实现了子类在对父类继承时访问权限的控制。
typedef struct Parent{//父类的属性说明}Parent1;//只包含属性//父类实现方法void parentfunc1()void parentfunc2()//子类属性结构体typedef struct Child{//子类的属性struct Parent father;……;}child1;//子类的成员方法//继承父类的方法//追加的成员函数实现方法void childfunc1();②多态:
可以是用C语言中的万能指针void* 实现多态,还有回调函数,即函数通过函数指针调用的函数。
void * p = new(Point, 1, 2); void * pp = new(Circle, 1, 2); draw(p); //draw函数实现了多态 draw(pp); delete(p); delete(pp);
回调函数在上一篇文章中有提及。
③封装:
1.利用C语言语法。在头文件中声明,在C文件中真正定义它。
这样可以隐藏内部信息,因为外部不知道对象所占内存的大小,所以不能静态的创建该类的对象,只能调用类提供的创建函数才能创建。这种方法的缺陷是不支持继承,因为子类中得不到任何关于父类的信息。
2.把私有数据信息放在一个不透明的priv变量或者结构体中。只有类的实现代码才知道priv或者结构体的真正定义。
0 0
- C语言是如何体现面向对象的?
- C语言中体现面向对象的地方
- 一.数组和指针的差别二.函数的好处以及使用函数的注意项。三.用c语言如何实现面向对象?c语言哪些点体现了面向对象。
- 面向对象的代码体现
- C语言如何面向对象?
- 面向对象(对象的内存体现)
- 如何使用C语言实现面向对象的设计
- c语言如何实现面向对象的机制
- C语言的面向对象
- 面向对象的c语言
- 模板模式(Templete)是面向对象的哪一个原则的体现
- java面向对象的体现下篇
- java面向对象的体现上篇
- C语言如何"实现"面向对象?
- C语言-----如何面向对象编程
- ava是面向对象的语言
- Java千百问_05面向对象(003)_java中抽象概念如何体现的
- javascript 是如何体现继承的
- 如何让你的用户反馈更简单
- Zabbix学习笔记(一)---安装配置与使用
- Largest prime factor(最大素数因子)
- Struts框架的搭建和测试:
- 项目上线
- C语言是如何体现面向对象的?
- 列式数据库和行式数据库
- NYOJ:93 汉诺塔(三)(简单栈)
- 位运算之 C 与或非异或
- Android中国开发精英必须知道的内容
- Git 学习笔记三
- ARM工作模式(一)
- ARM汇编指令
- 12A - Super Agent