对象和实例有什么区别?

时间:2010-02-18 16:50:58

标签: language-agnostic oop programming-languages

我想知道对象和类实例之间的区别。我觉得两者都是一样的,但为什么我们用两个名字打电话。任何人都可以用现实生活中的例子来解释吗?

10 个答案:

答案 0 :(得分:9)

在大多数面向对象的语言中,它们是相同的。 “类的实例”就是“对象”这个术语的定义方式。

答案 1 :(得分:5)

仅仅为了完整性:prototype-based programming languages中,不会绘制类和实例/对象之间的区别

如果你问这个问题,让我们退一步,你只知道基于类的面向对象。它有点像这样。

  1. Class告诉您您想要拥有什么(数据架构),以及您希望如何操作(方法)。
  2. 创建一个Object填写所需内容(数据),并使用随其定义的操作。
  3. 但是,如果您可以找到一种不同的方式来回答问题您希望我的对象做什么以及如何,则您不需要Class来拥有对象。在称为原型的替代模型中,通过克隆现有的(原型)并复制和扩展克隆的行为来创建对象实例。对象没有以此格式遵循的架构。它们只是一组数据和对数据起作用的东西。

答案 2 :(得分:4)

(编辑:这个问题最初有“java”标签。因此没有类的语言超出了范围。)

对象

  

类的模式(范例)。该   class Dog定义所有可能的狗   列出特征和   他们可以拥有的行为;物体   Lassie是一只特别的狗   特定版本的   特点。狗有皮毛;恋人   有棕色和白色的皮毛。

实例

  

可以拥有一个类的实例;   实例是实际对象   在运行时创建。在程序员   行话,Lassie对象是一个   Dog类的实例。这套   a的属性值   特定对象称为其状态。   该对象由状态和   在...中定义的行为   对象的类。

Wikipedia, Object-oriented programming

答案 3 :(得分:4)

“对象”,“类对象”和“实例”术语仅具有历史差异。目前,Wiki中甚至还有一篇文章:)

这里有额外的证据,即术语“对象”和“实例”是评价(来自Bertran Meyer的“面向对象的软件构建”):

属于ADT规范描述的对象集的对象称为ADT的实例。例如,满足STACK抽象数据类型属性的特定堆栈将是STACK的实例。

与ADT类似,类是一种类型:它描述了一组可能的数据结构,称为 班级的实例。抽象数据类型也有实例;区别在于 ADT的实例是纯数学元素(某些数学元素的成员) set),而类的实例是可以在中表示的数据结构 计算机的内存并由软件系统操纵。

“class”的定义产生副产品“对象”的定义。一个对象是 只是一个类的实例。例如,类STACK的实例 - 数据 表示特定堆栈的结构 - 是一个对象;所以是POINT类的一个实例, 代表二维空间中的特定点。

答案 4 :(得分:3)

他们是一样的。在上下文中,“实例”强调它是类定义的实例化; “对象”强调它是一个独特的实体。

答案 5 :(得分:2)

在这种情况下它们几乎相同。 “对象”可以用作稍微更通用/模糊的术语,“实例”通常更具体地用作“类的实例”。

答案 6 :(得分:2)

对象是一个更通用的术语。 C使用术语对象,即使它根本没有类 - 从它的角度来看,任何变量(例如)都是一个对象。

一些面向对象的语言也没有类。类是一种指定对象属性的方法;给定类的所有对象共享这些属性。但是,在某些语言(例如,Javascript,Self)中,您不必在类中指定这些属性。相反,从一个对象(“范例”)开始,从中克隆一个新对象并根据需要修改它。当/如果您创建了许多对象而没有修改它们时,您可以以说话的方式(具有相同属性的对象)结束“类”,但这或多或少是一个意外。

答案 7 :(得分:1)

同样的事情:“对象”实际上是“一个类的实例”。

答案 8 :(得分:1)

我可以用python来说明这一点,所以这里是: 在Python中,您可以创建一个类。让我们称之为Person类。然后,您创建Person类的实例。让我们叫他鲍勃。所以bob = Person()。问题是,bobPerson都是对象。当您执行Person()时,您实际上是在Person 对象上调用构造函数,该对象为您提供了一个实例对象 - 即{{ 1}}。

答案 9 :(得分:1)

如果要突出显示从给定类型或类创建对象,请使用实例

请参阅Wikipedia上的这一段:

  

在从类创建每个对象的语言中,对象称为该类的实例。如果每个对象都有一个类型,则具有相同类的两个对象将具有相同的数据类型。创建类的实例有时被称为实例化类。

     

对象的真实示例是“我的狗”,它是名为“dog”的类型(类)的实例,它是类“animal”的子类。