用 C 实现继承和多态 MIRO SAMEK 著 陈希明 译 虽然面向对象的设计并不会在很大程度上依赖于某种语言,但现代著作中提及面向对象的实现一般都认为是 C++, Smalltalk, 或者 Jav a
本文从较底层的视角用面向过程的语言(比如 C)对面向对象予以实现,这对于一些想运用面向对象思想但又不想切换到面向对象语言的嵌入式开发者会起一定的指导作用
有没有可能用像 C 语言这种非面向对象(non-OO)的语言写出面向对象(OO)的程序
在一个很小的,没有 C++编译器可用的嵌入式系统中怎样进行面向对象的程序设计
怎样改进 C 语言开发的编程模式
怎样提高 C 语言代码的可重用性、模块化功能以及健壮性
继承和多态究竟是怎么实现的
你的系统能接受额外开销么
在用 C(而不是面向对象语言)进行面向对象的设计时,你应该怎样折衷地考虑便利性和可读性
在这篇文章中,我将使用下面这些面向对象的概念演示一个轻型的、高效的 C 语言程序,从而对这些问题展开讨论
封装 — 把数据和函数打包进“类”,也就是信息隐藏和模块化
继承 — 基于已经存在的类来定义新的类和方法的能力,这是为了代码的重用性和组织结构
多态 — 同样的消息发送给不同的对象,而产生的行为应该依赖于接收到消息的对象的属性
我采用 Jav a 语言来说明继承和多态[1]
继承类(或者继承的实现)仅仅是一个继承的模型,它是由位于类层次体系根节点的抽象类提供的
反过来,这种实现允许多继承,允许类实现许多个 Jav a-sty le 接口
尽管面向对象语言具有很多无可置疑的优点,C 语言依然是最具知名度和使用最广泛的源代码语言
现在很多嵌入式系统并不提供其它语言的选择性,所以,大多数开发者依然仅仅使用面向过程的编程技术,而且很多人根本没有意识到在 C 语言中直接实现基本的面向对象概念是很容易的