在Java中,但在其他OO语言中,在其定义中初始化属性之间存在差异,如
class Example {
public Sample sample_attribute = new Sample();
}
并使用构造函数初始化它?
class Example {
public Sample sample_attribute;
public Example() {
sample_attribute = new Sample();
}
}
我想不出任何实际差异,有没有?否则,是否存在一种方法比另一种方法更好的情况,即使它们具有相同的结果?
答案 0 :(得分:3)
初始化顺序在这里很重要。
因此,第一种情况将在第4步初始化变量sample_attribute
,第二种情况将在第5步初始化变量sample_attribute
。这完全取决于您的要求。
如果要从Constructor访问任何变量,则需要使用第一种情况。
答案 1 :(得分:0)
使用传递给构造函数的信息初始化字段时,除了在构造函数中初始化之外别无选择。否则,我更喜欢现场初始化,因为它节省了我以后必须阅读的代码行。
答案 2 :(得分:0)
这两个版本是等效的。但是如果new Sample()
抛出一个已检查的异常,您将无法在字段声明