面向对象的程序设计方法使一种基于结构的分析的、以数据为中心的程序设计方法。在面向对象的程序中,活动的基本单位是对象,向对象发送消息可以激活对象的行为。所以,面向对象消息机制设计=对象+消息传递。
C语言虽然是一个面向过程的语言,它本身并没有提供的面向对象机制,但是通过合理的利用C语言提供的一些机制,可以简单的模拟出种种面向对象的基本特性。
(1)支持抽象数据类型:C语言中的结构体可以对具体的事物属性进行数据抽象。
(2)行为的封装:在结构体中只需要加入函数指针,并在使用前将其赋予具体的函数,就可以实现行为的封装。需要注意的是,这种解决办法需要在函数参数中加入一个指向结构体的本身的指针。这相当于C++中的this指针。即为在C语言结构(struct)之中放置数据和处理数据的函数式的指针就可以得到某种程度上的封装。
(3)继承:C语言的结构体是可以嵌套的,嵌套了其他的结构体的结构体就拥有了被嵌套的结构体的属性和方法。这样做,就使得C程序中的结构具有了简单的继承能力。
(4)多态:建立一个基对象,再从中衍化出派生对象,这只是在表面上实现了继承,而不是继承的目的。继承的目的在于对象操作的一般化。所谓一般化,是指一个相同的指令调用了不同的函数。这种性质称为多态。在C语言中,C语言提供了指针的强制类型转换机制。如果将一个派生对象的指针强制转换成基对象的指针,我们就可以调用基对象的函数来调用它的各种派生对象,从而实现多态的目的。由于C语言的结构体类型指针的强制转换只是对指针所指向的内存重新定义而已,所以在进行强制类型转化时必须把基对象放在派生对象结构体的第一行。