例子:
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
中时,如果我之前使用过 this.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
关键字添加到方法声明中即可。
关于java - 在类中使用私有(private)变量或公共(public)方法哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43668456/