【发布时间】:2012-09-03 12:53:25
【问题描述】:
我刚刚注意到一些我以前从未意识到的事情。事实证明,这个类在 C# 中是有效的:
class Foo
{
private string contents;
public Foo(string str) {
contents = str;
}
public void set(Foo other)
{
contents = other.contents;
}
}
因此同一类的不同实例可以访问彼此的私有成员。
到目前为止,我认为对象的私有成员只能由该对象访问,而不能由同一类的其他实例访问。发现这一点有点令人惊讶。
在所有常见的面向对象语言中都是这种情况吗?这对我来说并不直观。
【问题讨论】:
-
原来有人已经问过一个非常相似的问题:stackoverflow.com/questions/346127/…。但是,这个问题的答案并没有给出这种设计选择的权威理由。仅仅是因为以不同的方式做事效率低/不可能吗?
标签: oop