一个刚接触 OO 编程的 friend 问我 Member 和 Property 的区别,我很惭愧地承认我不能给他一个好的答案。由于属性本身也可以是对象,因此我得到了一般描述和异常(exception)列表。
有人可以对何时考虑成员与属性(property)的情况做出一个很好的定义吗?也许我在混淆这个概念,或者只是成员只是我使用的内部名称,而属性是暴露给其他对象的东西?
我不认为不知道这个问题的答案影响了我的编程质量,这只是一个语义点,但仍然困扰着我无法向他解释。
最佳答案
这两个术语在面向对象编程或面向对象设计中都没有任何定义的含义。它们在绝大多数编程语言中也没有任何明确的含义。
只有极少数编程语言具有称为属性或成员的概念,而同时具有这两者的则更少。
具有两者之一的语言的一些示例是 C++(具有成员)、ECMAScript(具有属性)和 C#(具有两者)。但是,这些术语不一定表示不同编程语言中的相同概念。例如,术语“成员”在 C++ 和 C# 中的含义大致相同,但术语“属性”在 ECMAScript 和 C# 中的含义完全不同。事实上,ECMAScript 中的术语“属性”与 C++ 和 C# 中的术语“成员”表示大致相同的概念(即,意思大致相同)。
所有这一切只是说这两个术语的含义与编程语言的相关规范所说的完全相同,不多也不少。 (在此处插入无偿的 Lewis Carroll 引言。)
关于oop - 什么是成员与属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1235013/