什么是字段的实例?

时间:2010-06-16 12:00:47

标签: oop

这可能是一个奇怪的问题,但它实际上让我有些头疼。

在面向对象编程中,关键概念有可接受的名称。在我们的模型中,我们有,其中包含方法字段。现在,进入数据世界:

  • 类的实例称为对象
  • 字段的实例被称为......什么?

值? value 一词对此有点宽泛吗?我也被提供了“财产”,但财产也不是模型的一部分,而不是数据?

(这不是纯粹学术性的,我实际上正在编写这些概念。)

更新:让我举个例子。我有一个字段“人”,字段“年龄”。如果我创建20个Person实例,则每个这样的实例都称为对象。到现在为止还挺好。但是,假设我选择Person“Igor”,并将他的年龄设置为20.包含现在调用的数字20的存储位置是什么?它是一个字段,一个值,还是其他什么东西?

另一个更新:Pavel Feldman在this related question中的引用用不同的词语描述了我上面试图描述的内容:

  

“我会说在基于类的OOP字段属于类并且没有值。当你在c#或java中查看反射时,它是如此 - 类具有字段,字段具有类型,名称等。你可以从对象中获取字段的值。你在类中声明了一次字段。你有很多具有相同字段但值不同的对象。“

5 个答案:

答案 0 :(得分:8)

无法实例化字段。字段只能包含值。该值可以是原始/本机类型,也可以是指向对象实例的引用/指针。


根据您的更新:如果对象代表真实世界的权利,那么它通常被称为 property 。对于“真实世界的实体”,我指的是个人/人类,例如PersonProductOrderCar等。如果对象不代表个人/人类,例如ListStringMap,然后它通常被称为字段。这就是我迄今为止所观察到的。

答案 1 :(得分:4)

同意BalusC。但是我认为你要问的是如何调用实例化对象的字段。请记住,对象包含状态(数据)和操作(方法),您可以将对象字段称为状态

答案 2 :(得分:2)

字段是您在类的上下文中或在对象的上下文中谈论它的字段天气。

class C {
    int i;       // i is a field
}

obj = new C();
obj.i = 7;       // obj.i is a field

参数 vs 参数相反,“实例化”和“未实例化”字段的术语没有区别。

答案 3 :(得分:0)

类的实例是对象,类可以包含指向其他实例化对象(或空指针)的字段。说一个字段的实例是没有意义的,而是你可能会谈论特定字段指向的对象,对于不同的实例可能会有所不同。或者你可以谈谈一个领域的类型(它属于哪个类)

答案 4 :(得分:0)

答案基本上不是我们没有类(或对象)实例的字段值的名称吗?

这就像给一个类实例的方法返回的值命名...

我认为“状态”无论如何都是最好的答案,如“BalusC”所示。