为什么一个类的实例可以访问其自身类型的另一个实例的私有字段?
在 Java 中,类的实例可以访问其自身类型的不同实例的私有字段,如以下清单所示:
public class Foo {
private int secret;
public void bar(final Foo foo) {
foo.secret = 100;
}
}
这种语义学的论据是什么(在设计语言时)?
在 Java 中,类的实例可以访问其自身类型的不同实例的私有字段,如以下清单所示:
public class Foo {
private int secret;
public void bar(final Foo foo) {
foo.secret = 100;
}
}
这种语义学的论据是什么(在设计语言时)?
首先,你必须问“为什么有私人田地?
私有字段主要用于封装:类的使用者不必知道该类实现的内部,实际上,这些内部应主动隐藏给使用者。否则,如果用户依赖于这些内部结构,那么实现者将被迫支持它们或破坏向后兼容性。换句话说,它保护了类的用户和设计者:
但是一个类不需要保护自己;它不需要担心其代码的一个位更改,但另一个位(使用第一个位)无法更改的情况。向后兼容性不是问题,因为该类是作为单个原子代码块开发和部署的。换句话说,上述两种保护都不需要。
由于不需要保护字段,并且由于通常需要查看它们(例如,比较两个对象是否相等),因此它们在类中可见。
该字段旨在告诉其他程序员不要搞砸它。private
据推测,在单个类中工作的每个人都知道所有变量的作用。该字段不会对您隐藏自己的代码,只会从外部隐藏。private