我是 Java 新手,我也想知道如何在带有参数的构造函数内正确分配值。问题是如何正确封装这些值,即我们使用 set
方法还是仅使用 this
关键字就足够了?请注意我问的是封装和 OOP。
public class cars{
private String make;
private String model;
public String getMake(){
return make;
}
public String getModel(){
return model;
}
public void setMake(String ParamMake){
this.make = ParamMake;
}
public void setModel(String ParamModel){
this.model = ParamModel;
}
// Should it use the setter
public cars(String make,String model){
setModel(model);
setMake();
}
// Or
public cars(String make,String model){
this.model = mode;
this.make = make;
}
}
最佳答案
对此有两种观点:
永远不要从构造函数中调用可重写的方法,除了 setter ;如果您有 setter,请始终使用它,因此对成员的分配只会发生在一个中心位置。
永远不要从构造函数中调用可重写的方法,甚至 setter 也不行;只需直接分配,例如通过
this.make = make;
。
我相信#2 是更容易被接受的思想流派。 #1 的问题是,如果子类重写了 setter,那么在构造过程中可能会出现类之间难以理解的串扰。
<小时/>旁注:Java 具有严格遵守的命名约定。类名应以大写字符开头;变量、参数和方法名称不应该。因此,Cars
,而不是 cars
,并且 paramModel
,而不是 ParamModel
。
¹“可重写” - 例如,非私有(private)
、非final
方法。
关于java - 如何将构造函数参数分配给成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55647961/