我有diffuculties了解为什么我可以访问以外的私人字段。上下文? 为了澄清我添加了一个小MyClass的例子:Java的私人字段访问
public class MyClass {
private int myPrivateInt;
public MyClass(int myPrivateInt) {
this.myPrivateInt = myPrivateInt;
}
public boolean equals(Object obj) {
// if it's not an instance of MyClass it's obviously not equal
if (!(obj instanceof MyClass)) return false;
MyClass myClass = (MyClass) obj;
// here comes the part I don't quite understand fully:
// why can I access a private field outside of the "this." context?
return this.myPrivateInt == myClass.myPrivateInt;
}
}
这是一个delibarate语言选择,或者是根本不可能的这个区别开来。上下文和(或多或少)传入的“同一类”等于(Object obj)方法?
非常感谢您提前!
好吧,我觉得我是那种对我的方式抓它。但是,再一次,像这样使用它是否是好习惯,还是最好和吸气剂和吸附剂一起使用? – baeda
@baeda *真*取决于你的情况。使用getters允许子类覆盖非final的getter,并且在某些情况下是有用的。当有问题的值可能需要一些计算来获得时,吸气器也很有用。但是对于您的基本示例,使用该私有'int'似乎就足够了。一般而言,良好的做法是使用任何导致最清晰,最干净,最易维护的代码来满足您的要求。作为一个练习,尝试用getter和一个没有的版本写一个版本,并且看看哪一个更好。这是一个需要回答的重大问题。 –
好的,会做的。感谢您的时间和答案! – baeda