OOP 术语:Attributes(特性)与 Properties(属性)的区别(转载)

  • 来源:http://www.wwwcoder.com/
  • 作者:Venkatarama Uppugunduri

这些至少在程序员的世界中是一种容易被混淆的术语。它们的含意经常会被交换。

这里是我对于它们的看法。

Attributes(特性)讨论的是主题的天性。而 Properties(属性)则讨论的是主题的所有物中的财产、内容,状态或者所有权。

打个比方说我是人类,在这个前提下人类就是以我为主题时的一个 Attribute(特性)。而象在我的公寓中既有人也有狗一样,在这里的人就是以公寓为主题时的 Properties(属性)。

相同的事物出现在 .NET 的世界中。例如:Serializable 就是一个实例对象的 Attribute(特性),并且那个对象可能拥有一个使用所期望的 true 或 false 布尔值的属性来表示其能够被序列化。这会告诉 .NET 运行时:这个类是能够通过 Attribute(特性)来表示序列化能力的,并且又无需使用通过它所暴露的 Property(属性)就能够完全表示这个类是可序列化能力。

因此 Attribute(特性)为主题定义了特有的性质或天性,而 Property(属性)则是属于这个主题的。在面向对象范例的术语中,与主题相关的 Attribute(特性)的含意应该是:“是什么”,而 Property(属性)的含意则应该是:“有什么”。

范例
  • 人是人类。这里的人类就是一个 Attribute(特性)。
  • 人有翅膀。这里的翅膀就是 Properties(属性)。

那么 Field(字段) 和 Property(属性)呢?多数时候我们都会听说:Fields(字段)和 Properties(属性)在有时候听起来是相似的,而在有时候它们听起来又是不同的。而实际上,Fields(字段)定义了在存储值或者主题的状态时所必需的区域,而 Properties(属性)则除了对状态或值的呈现之外,其他的什么也没有。

posted @ 2011-04-05 19:20  郑文亮  阅读(494)  评论(0编辑  收藏  举报