java – 哪种更好的做法,在类中使用私有变量或公共方法?

例:

private int x = 4;

public TestClass(int x) {
    this.x = x;
}

public TestClass(int x) {
    setX(x);
}

public void setX(int x) {
    this.x = x;
}

第一个构造函数是更好的练习还是第二个?我问这个是因为当我在IntelliJ IDEA中封装我的类时,如果我之前使用过.x = x,则将其更改为setX(int newX);.

最佳答案 在大多数情况下,这都是个人喜好.如果它的值不依赖于其他变量,我会使用第一个构造函数.但是,setter方法允许在修改变量值之前满足某些条件.例如:

private int x;

public TestClass(int x) {
    setX(x);
}

public void setX(int x) {
    // Some random condition depending on other variables.
    if (System.currentTimeMillis() & 1 == 0) {
        this.x = 5;
    } else {
        this.x = x;
    }
}

如果有许多条件无法通过三元语句轻易表示,那么使用setter方法是有意义的.

如果类是抽象的,那么扩展它的具体类可能会覆盖setter方法,从而修改变量的值.如果您打算使用自封装并且不希望任何子类覆盖setter方法,只需将final关键字添加到方法声明中.

点赞