在我看来,构造函数可以共享相同的代码,例如:
public class Foo {
private int foo;
{foo = 5;}
public Foo(){}
public Foo(int v){this.foo = v;}
public int getFoo(){return foo;}
}
代码“foo=5;” 为两个构造函数调用。
在我看来你不能,但我想确定一下。不可能创建使用参数的公共代码?
例如,类似:
public class Foo {
private int foo;
(int m){foo = m*5;}
public Foo(int m){}
public Foo(int v,int m){this.foo = v;}
public int getFoo(){return foo;}
}
据我了解,唯一的方法是创建一个私有的 void init(int m) 以供所有构造函数调用?
ps:我称{foo = 5;}为“通用代码”,但我猜这个功能还有另一个官方名称?
编辑(1):
我正在寻找的术语是初始化块
这个问题与询问一个构造函数是否也可以调用另一个构造函数不同。因为当使用初始化块时,代码被自动调用,即。没有风险调用构造函数并忘记调用它
我对使用“void init”的评论不好,确实在这种情况下调用另一个构造函数更好。
简而言之,我的问题是:初始化程序块可以带参数吗?这与强制实现所有构造函数上的某些参数有点相同。
编辑(2):
我现在想知道实现我所要求的唯一方法是否是使用继承来强制使用特定的构造函数。