oop - 什么是成员与属性

标签 oop properties member

一个刚接触 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/

相关文章:

javascript - 为什么我无法访问静态变量?

iphone - Objective-C 属性 setter 如何发出失败信号?

c++ - 多态性、虚方法、C++

c++ - 是否可以在 C++ 的成员初始化列表中初始化数组?

python - Pandas DataFrame 对象继承还是对象使用?

javascript - 如何在Javascript中正确调用匿名函数的函数?

python - 如何创建 "list"类的子类,它在实例化时自行排序?

javascript - 操作对象文字: add property in certain order

javascript - 从新对象的属性更新对象的属性,但前提是新对象的属性不是未定义的

C++:使用具有不同运算符和类方法的相同函数布局