说我有一些课程:
public class A {
private int val = 0;
public int getVal() {
return val;
}
public void addFrom(A otherA) {
this.val += otherA.val;
if (otherA.val > 0)
otherA.val = 0;
else
otherA = Math.abs(otherA.val);
}
}
我是否应该使用getter方法来使用otherA的val变量?这样做风格更好吗?
编辑:这是一个非常简化的类,需要花费很长时间才能阅读。但是假设有懒惰的初始化,还有其他方法可以访问这个类,等等。我已经更新了示例方法,这样可能会更清楚,但我希望很清楚我的问题涉及访问其他对象的变量,并想知道对于不是“this”的东西使用直接变量访问是否是失礼。
答案 0 :(得分:3)
不,绝对没有。
当你在班级成员中时,你应该直接使用变量,并在其他所有情况下使用getter(因为val
是私有的,因此会出现错误)。
答案 1 :(得分:1)
public int getVal()
旨在将您的礼物(变量)在一个框内呈现给外界(封装)。你自己在盒子里送礼物吗?这很奇怪,所以请按原样使用变量。
答案 2 :(得分:0)
您可以使用变量,但当前代码无法编译。可能返回应该是int而不是boolean。
您的意图可能是从Comparable接口覆盖compareTo方法
答案 3 :(得分:0)
添加不必要的getter会显示内部结构,这是增加耦合的机会。
一个真正封装好的类没有setter,也没有getter。这个类应该负责用它的数据计算某些东西,然后返回结果,而不是向类询问某些数据,然后用它来计算某些数据。
使用访问器来限制对字段变量的直接访问比使用公共字段更受欢迎,但是,为每个字段制作getter和setter是过度的。它也取决于情况,有时你只想要一个愚蠢的数据对象。应该为真正需要的领域添加访问者。一个类应该暴露出更大的行为,它恰好使用它的状态,而不是一个由其他类操纵的状态库。