在Java中的equals(Object o)方法中,我可以访问传入对象的私有变量,而无需通过其公共getter。
public boolean equals(Object o){
...
MyObject other = (MyObject)o;
return getProp() == other.prop;
}
怎么样?
答案 0 :(得分:50)
私有数据可由该类的任何实例访问,即使A类的一个实例正在访问另一个A实例的私有成员。重要的是要记住该访问修饰符(私有, protected,public)控制类访问权限,而不是实例访问权限。
答案 1 :(得分:2)
可能的答案是,可见性模型的设计者认为在类中工作的任何开发人员都必须掌握整个类的实现。
但这是一个坏主意。这鼓励了不良做法。访问类Person
中Person
字段的开发人员不必知道整个类的实现。好的做法是使用访问器,而不必知道访问器的操作。