是否有可能更简洁地重写以下内容,我不必重复写两次this.x = x;
?
public class cls{
public int x = 0;
public int y = 0;
public int z = 0;
public cls(int x, int y){
this.x = x;
this.y = y;
}
public cls(int x, int y, int z){
this.x = x;
this.y = y;
this.z = z;
}
}
答案 0 :(得分:15)
BoltClock的答案是正常的方式。但是有些人(我自己)更喜欢反向的“构造函数链接”方式:将代码集中在最具体的构造函数中(同样适用于普通方法)并使另一个调用那个,使用默认参数值:
public class Cls {
private int x;
private int y;
private int z;
public Cls(int x, int y){
this(x,y,0);
}
public Cls(int x, int y, int z){
this.x = x;
this.y = y;
this.z = z;
}
}
答案 1 :(得分:10)
使用this
关键字调用此重载构造函数中的其他构造函数:
public cls(int x, int y, int z){
this(x, y);
this.z = z;
}
答案 2 :(得分:1)
答案 3 :(得分:0)
您可以使用初始化块来实现此目的。
答案 4 :(得分:0)
非常简单:只需编写一个这样的初始化函数:
public class cls{
public int x = 0;
public int y = 0;
public int z = 0;
public cls(int x, int y){
init(x,y,0);
}
public cls(int x, int y, int z){
init(x,y,z);
}
public void init(int x, int y, int z ) {
this.x = x;
this.y = y;
this.z = z;
}
}