我必须在Java中使用我自己的类中的getter方法吗?

时间:2012-11-14 20:31:15

标签: java coding-style getter getter-setter private-members

说我有一些课程:

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”的东西使用直接变量访问是否是失礼。

4 个答案:

答案 0 :(得分:3)

不,绝对没有。

当你在班级成员中时,你应该直接使用变量,并在其他所有情况下使用getter(因为val是私有的,因此会出现错误)。

答案 1 :(得分:1)

public int getVal()旨在将您的礼物(变量)在一个框内呈现给外界(封装)。你自己在盒子里送礼物吗?这很奇怪,所以请按原样使用变量。

答案 2 :(得分:0)

您可以使用变量,但当前代码无法编译。可能返回应该是int而不是boolean。

您的意图可能是从Comparable接口覆盖compareTo方法

答案 3 :(得分:0)

添加不必要的getter会显示内部结构,这是增加耦合的机会。

一个真正封装好的类没有setter,也没有getter。这个类应该负责用它的数据计算某些东西,然后返回结果,而不是向类询问某些数据,然后用它来计算某些数据。

使用访问器来限制对字段变量的直接访问比使用公共字段更受欢迎,但是,为每个字段制作getter和setter是过度的。它也取决于情况,有时你只想要一个愚蠢的数据对象。应该为真正需要的领域添加访问者。一个类应该暴露出更大的行为,它恰好使用它的状态,而不是一个由其他类操纵的状态库。