类的术语 "属性" vs "成员" vs "变量" vs "字段" 的区别。

32

看起来开发人员在引用存储在类实例中的数据时经常交替使用这些术语。

每个术语之间是否存在技术上的区别,还是可以交替使用它们?


2
http://en.wikipedia.org/wiki/Field_(computer_science) - Nir Alfasi
2
通常情况下,你会看到很多重叠,特别是对于经常使用多种语言或技术的程序员来说,他们对于同一概念有相互冲突的术语,例如“function”和“method”。 - Roddy of the Frozen Peas
可能应该将此添加到列表中:http://haacked.com/archive/2006/02/08/OnReligiousWarsinSoftware.aspx - billjamesdev
有趣的列表,但根据这里的回复,似乎没有人特别热衷于使用其中的任何一个。 - Josh Diehl
在Java中,“成员变量”、“成员字段”和“实例变量”是同义词,包括类的所有方法和所有字段,并与特定类对象相关联。方法或代码块内的变量称为“局部变量”。 方法声明中的变量称为“参数”。“静态变量”、“类变量”是同义词,对该类的所有对象都是公用的而不是特定实例的。 “静态成员”包括:“静态变量”、“静态方法”、“静态块”和“嵌套类”。 - Java bee
5个回答

12

根据众多回答,"attributes"、"fields"和"variables"这些类别名称在IT技术中被相对使用并有微妙的区别,但这种区分因人而异。因此,最好将它们合并在一起,不要强调细微差别。

有共识认为,一个类的成员包括方法和数据,因此它与其他类别有所区别。


10

"成员"是更广泛的术语。它指代该类别中的所有内容(实例方法/变量等)。

"属性/变量/字段"是相同的,也可以使用 "成员"。


5
不是所有的变量都是属性。 - Joseph Elcid
@JosephElcid,您可以提供一个案例吗?我可能误解了。 - kosa
在我的理解中,属性在某种程度上对客户端可见,而变量可以是私有的,只能在类内部看到。 - namenamename
@ConorSherman:所有这些术语都指的是与对象/类相关联的一个内存位置。我们如何称呼它们取决于编程背景不同的人。 - kosa
4
在面向对象编程中,属性具有可见性,而变量没有。更多信息请参见这里 - Joseph Elcid
@JosephElcid 我认为你提供的链接与此讨论无关,因为它没有涉及可见性,并且以“简单来说,属性控制在限制范围内,变量控制在限制范围内。关于每个概念生成的数据,属性数据是离散的,而变量数据是连续的。”开始,这是无意义的。后来它继续谈到了行业。 - Yaroslav Nikitenko

9

成员:通常用于定义变量和方法。

属性:属性是对象的实例变量。

变量:原始变量和对象引用变量作为实例或本地变量。

字段:字段标记实例变量。


1
还有成员类和枚举。 - dammkewl

3

我通常看到的用法:

attribute - 几乎是标准英语词典的意思。 通常用于更抽象的概念,如Java(bean)属性,而不是成员、变量或字段。

member - 可以在程序外部看到的方法和字段。 在C#中包括属性和事件。

variable - 通常是局部变量。 有时指字段,特别是在定义字段时。

fields - 类和实例变量;在整个类中可见的变量。

(我也尝试自己使用这些词,如果我弄错了,请告诉我!)


2

属性: 类中某个特性的抽象概念。例如,Person类可能有一个lastName属性。使用属性和字段的区别取决于属性类型的“复杂程度”。简单类型通常称为属性。

成员: 指绑定到对象实例的方法或变量

变量: 表示给定名称代表可以变化的值的抽象概念,通常可以更改

字段: 字段类似于属性,但是字段有时用于表示比属性更复杂的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接