学习程序时,我们从什么时候开始有对象的概念?大概是学习C++开始吧,并且听到一个词:面向对象(OOP)。怕是很多人都背得出“对象”的定义——我记得大概是“对有共同属性事物的抽象”——于是很多人便以为自己“懂”面向对象了,还有些人甚至知道,在编程中,对象是用类(class)封装的,便常常将“面向对象编程”挂嘴边,俨然一个高级语言程序员。
说了这么多,看官您大概听出我在暗示什么了,是的,正如你担心的,如果你理解的“对象”、“类”就是我刚才说的那样,可以说你完全被教材作者所谓“丰满”的描述语言给误导了——甚至有些人被这晦涩难懂的定义吓倒而放弃了做一名程序员。
再给个暗示:机器级代码(或是机器/系统),也就是一些1/0的组合,是完全不知道“类”为何物的,所谓C++类(我假设您知道C++)对数据成员的三级保护(私有/共有/保护)只是在编译时实现的,换句话说,如果有个变态的编译器作者完全忽略这三个关键字,那么所谓“封装”就不起任何保护作用。
回到“对象”的讨论上来,那么现在什么是“对象”呢?对象是程序与数据的组合,仅此而已。C++号称“面向对象”,也就是在语法上对此提供了支持,如果你对自己程序中的数据和操作之间的关系足够了解的话,用C也是同样能实现“对象”的,不过话又说回来,如果你连这种关系都不清楚,即使用C++以及更高级的“面向对象”语言,你又如何能“抽象”并定义出一个合理的“类”呢?