为什么用一个构造函数初始化类声明中的某些变量?
问题描述:
我是Java新手,但在C++中经验丰富。我碰到一些代码,我不明白传来:为什么用一个构造函数初始化类声明中的某些变量?
public class SomeClass {
private SomeOtherClass someOther = new SomeOtherClass();
private AThirdClass thirdClass;
SomeClass() {
this.thirdClass = new AThirdClass();
}
}
为什么当只有一个构造函数,你将有一些其它的初始化和三级栏目在构造函数初始化初始化?
答
以下是您可能希望这样做的一个原因。
public class SomeClass {
private SomeOtherClass someOther = new SomeOtherClass();
private AThirdClass thirdClass;
SomeClass(int x) {
this.thirdClass = new AThirdClass(x);
}
}
但这只能解释为什么你想在构造函数中初始化thirdClass。我无法解释为什么你想在init块中初始化someOther。
答
绝对没有理由,除非你进入静态声明,在这种情况下,它可能是有道理的。
答
您的示例中没有任何内容会提示原因,但底层实现可能存在问题且考虑得不好的代码。在您的示例中初始化SomeOtherClass
将始终在构造函数的初始化之前运行,这对您来说可能很重要。有人可能认为这很重要。
或者,它可能只是两个不同的开发人员,具有两种不同的样式偏好。两者在技术上都不是错误的,但都有它们的(缺点)优势。