我刚注意到一些我从未意识到的东西。事实证明,这个类是在C#中有效:可以从同一类别的其他实例访问私人成员
class Foo
{
private string contents;
public Foo(string str) {
contents = str;
}
public void set(Foo other)
{
contents = other.contents;
}
}
同一类等不同情况下可以互相访问的私有成员。直到现在,我认为对象的私有成员只能被该对象访问,而不能被同一类的其他实例访问。发现这一点有点令人惊讶。
在所有常见的面向对象的语言中都是这种情况吗?这对我来说并不直观。
事实证明,有人已经问过一个非常类似的问题:http://stackoverflow.com/questions/346127/access-private-member-variable-of-the-class-using-its-object-instance?rq= 1。尽管如此,该答案的答案并没有给出这种设计选择的授权理由。这是否仅仅因为以不同的方式进行效率低下/不可能? – Oliver