可能的重复:
为什么 Java 中的类是“类”?
我正在考虑 Haskell 中的类型类,它允许您根据可以对它们执行的操作将类型分成不同的组。但是为什么类在 C++ 中被称为类呢?他们最初的目的是分类什么?
可能的重复:
为什么 Java 中的类是“类”?
我正在考虑 Haskell 中的类型类,它允许您根据可以对它们执行的操作将类型分成不同的组。但是为什么类在 C++ 中被称为类呢?他们最初的目的是分类什么?
因为它们在 Simula 中被称为“类”。消息来源表明,Simula 受到Algol 中“记录类”(即具有相关类型信息的结构化数据)提案的影响。大多数其他语言(直接或间接)从 Simula 派生其 OO 术语。
对现实世界的实体(对象)进行分类。
C++ 中的类旨在对对象进行分类。
他们对物体进行分类,因此得名:)
实际上,不常见的用途是haskell中的一种。在大多数 OO 语言中,类用于指代定义一类对象行为的类型。例如,Car
是一类有很多实例的对象,我的车,你的车,别人的车。在 Haskell 中,该术语在元语言级别用于指代类型的类,而不是对象的类。
在面向对象编程中,您拥有具有状态并支持某些操作的对象。对于一些不同的对象(例如,在金融程序中表示银行账户的对象,与在赛车模拟器中表示汽车的对象),状态和内容是完全不同的。所以我们不能以同样的方式对待所有的对象。
一个类代表一堆工作相似的对象。如果你知道一个对象属于某个类,那么你就知道可以用它做一些事情。代表银行帐户的对象可能支持诸如deposit
, withdraw
, getBalance
,之类的操作getAccountHolder
。
谈论“支持deposit
, withdraw
, getBalance
, 和getAccountHolder
操作的对象类”或“支持accelerate
, getSpeed
, 和steer
方法的对象类”只是“类”这个词的正常使用(并且与“分类”有关, 基本上只是“投入课堂”的意思;“课堂”这个词在一群学生中是完全不同的)。
显然,您很快就想命名特定的类,这样您就可以说BankAccount
or RacingCar
,而不是“支持...的对象类”。
所以一堂课就是这样;一个“事物”,它定义了作为类实例的对象的共同点。