我在抽象类中有一个构造函数,该构造函数中包含许多参数
我正在尝试扩展此类,我想在扩展构造函数中对super()的调用中设置一些默认值。
问题在于,通过查看代码,看起来很混乱:
super(0,1,2,3,4,5,6,7,8,9);
(请记住,这是为堆栈溢出而简化的)。
我想做的是有这样的构造函数:
public Test(){
int a = 0;
int b = 1;
int c = 2;
int d = 3;
int e = 4;
int f = 5;
int g = 6;
int h = 7;
int i = 8;
int j = 9;
super(a,b,c,d,e,f,g,h,i,j);
}
纯粹出于视觉和阅读目的。有什么办法吗?
最佳答案
不,您不能这样做-但是,如果重要的部分是为参数赋予有意义的名称,则可以考虑以下方法:
class Foo extends Bar {
private static final int DEFAULT_WIDTH = 10;
private static final int DEFAULT_HEIGHT = 10;
public Foo() {
super(DEFAULT_WIDTH, DEFAULT_HEIGHT);
}
}
就个人而言,我发现比起在构造函数中拥有局部变量,它更容易解释。
另一种解释方式是注释:
public Foo() {
super(
10, // width
10); // height
}
无论如何,这只会与“声明单独的变量”代码的行数相同。