【发布时间】:2013-06-06 07:13:37
【问题描述】:
class Person
{
private BankAccount account;
Person(BankAccount account)
{
this.account = account;
}
public Person someMethod(Person person)
{
//Why accessing private field is possible?
BankAccount a = person.account;
}
}
请忘记设计。我知道 OOP 指定私有对象是类私有的。我的问题是,为什么 OOP 被设计成私有字段具有类级别的访问权限,而 不是对象级别的访问权限?
【问题讨论】:
-
我相信 OP 认为传递给“someMethod”的“Person”对象是一个单独的对象,因此该方法不应访问它的私有成员......即使它在“人”类。
-
有些语言不这样做(例如新话)。你不太可能得到一个很好的答案。您会从指定的内容逆向获得答案。
-
someMethod无效。它不返回任何东西。必须是void。 -
如果不是这样的话,复制构造函数和赋值运算符imo就很难写了。
-
在 Scala 中,您可以指定
private[this]。这是我猜 Java 永远不会添加的 Scala 功能。但是,我之所以遇到这个问题,是因为我遇到了一个 IDE 故障,告诉我实例 A 无法访问实例 B 的类私有字段,即使它们是同一个类。我保存了,光没有穿过黄色就从红色变成绿色。