什么是会员与财产

Sql*_*yan 33 oop properties member

一个不熟悉OO编程的朋友问我会员和财产之间的区别,我很惭愧地承认我不能给他一个好的答案.由于属性本身也可以是对象,因此我留下了一般描述和异常列表.

有人可以详细说明何时考虑会员与财产的关系?也许我正在混淆这个概念,或者只是一个成员只是我使用的内部名称,而属性是暴露给其他对象的?

我不认为不知道这个问题的答案会影响我的编程质量,这只是一个语义点,但我仍然无法向他解释.

Jon*_*eet 56

属性是一个类的成员.其他可能是构造函数,方法,字段,嵌套类型,转换,索引器等 - 当然,取决于语言/平台.很多时候术语的确切含义取决于上下文.

要提供C#特定的定义,请参阅C#3.0规范,第1.6.1节:

下表概述了类可以包含的成员类型.
(行......)

  • 常量
  • 字段
  • 方法
  • 属性
  • 索引
  • 活动
  • 运营商
  • 构造函数
  • 析构函数
  • 类型

请注意,这是一个的成员.不同的"事物"具有不同类型的成员 - 例如,在C#中,接口不能将字段作为成员.

  • 到目前为止唯一的一个(四个)知道一个财产也是会员的+1 ... (2认同)

Jör*_*tag 7

这两个术语在面向对象编程或面向对象设计中都没有任何定义的含义.它们在绝大多数编程语言中也没有任何明确的含义.

只有极少数的编程语言具有称为属性成员的概念,并且两者都更少.

具有两者之一的语言的一些示例是C++(具有成员),ECMAScript(具有属性)和C#(具有两者).然而,这些术语不一定表示不同编程语言中的相同概念.例如,术语"成员"在C++和C#中的含义大致相同,但术语"属性"在ECMAScript和C#中的含义完全不同.实际上,ECMAScript中的术语"属性"表示与C++和C#中的术语"成员"大致相同的概念(即,意味着大致相同的事物).

所有这些只是说这两个术语正是指编程语言的相关规范所表达的含义,不多也不少.(在这里插入无偿的刘易斯卡罗尔报价.)


Guf*_*ffa 5

属性是一种成员。

例如,在 C# 中,一个类可以具有以下成员:

  • 构造函数
  • 析构函数
  • 常数
  • 字段
  • 方法
  • 特性
  • 索引器
  • 运营商
  • 活动
  • 代表
  • 班级
  • 接口
  • 结构

MSDN:C#:类