为什么用一个构造函数初始化类声明中的某些变量?

问题描述:

我是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将始终在构造函数的初始化之前运行,这对您来说可能很重要。有人可能认为这很重要。

或者,它可能只是两个不同的开发人员,具有两种不同的样式偏好。两者在技术上都不是错误的,但都有它们的(缺点)优势。