这可能是一个奇怪的问题,但它实际上让我有些头疼。
在面向对象编程中,关键概念有可接受的名称。在我们的模型中,我们有类,其中包含方法和字段。现在,进入数据世界:
值? value 一词对此有点宽泛吗?我也被提供了“财产”,但财产也不是模型的一部分,而不是数据?
(这不是纯粹学术性的,我实际上正在编写这些概念。)
更新:让我举个例子。我有一个字段“人”,字段“年龄”。如果我创建20个Person实例,则每个这样的实例都称为对象。到现在为止还挺好。但是,假设我选择Person“Igor”,并将他的年龄设置为20.包含现在调用的数字20的存储位置是什么?它是一个字段,一个值,还是其他什么东西?
另一个更新:Pavel Feldman在this related question中的引用用不同的词语描述了我上面试图描述的内容:
“我会说在基于类的OOP字段属于类并且没有值。当你在c#或java中查看反射时,它是如此 - 类具有字段,字段具有类型,名称等。你可以从对象中获取字段的值。你在类中声明了一次字段。你有很多具有相同字段但值不同的对象。“
答案 0 :(得分:8)
无法实例化字段。字段只能包含值。该值可以是原始/本机类型,也可以是指向对象实例的引用/指针。
根据您的更新:如果对象代表真实世界的权利,那么它通常被称为 property 。对于“真实世界的实体”,我指的是个人/人类,例如Person
,Product
,Order
,Car
等。如果对象不代表个人/人类,例如List
,String
,Map
,然后它通常被称为字段。这就是我迄今为止所观察到的。
答案 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”所示。