public class MotoXCellPhone {
//assume there's a speaker class
private BlueToothSpeaker speaker;
//why instantiate in constructor?
MotoXCellPhone() {
speaker = new BlueToothSpeaker();
}
//or if i instantiate in a method?
public BlueToothSpeaker useSpeaker() {
speaker = new BlueToothSpeaker();
return speaker;
}
}
为什么我要在另一个类中实例化一个类'构造函数?我还没有完全理解作文,所以我对“为什么"一切
答案 0 :(得分:1)
如果在方法中实例化它,则每次调用该方法时都会创建一个新的。如果这没有意义 - 如果你希望一个BlueToothSpeaker
对象在其生命周期内绑定到MotoXCellPhone
对象 - 那么你需要在构造函数中创建它(或注入它)。
答案 1 :(得分:1)
论点如下:如果其他人使用您的代码,他们可能不会调用useSpeakser()
,因此speakers
可能是null
。在构造函数中实例化speakers
断言它不会是null
。
答案 2 :(得分:0)
构造函数将在实例化MotoXCell时运行并实例化BlueToothSpeaker,而该方法仅在调用时实例化新类。
答案 3 :(得分:0)
有两种类型的成员初始化,每种都有利弊,我会尝试枚举它们:
<强>早期初始化强>:
<强>懒惰初始化强>:
根据班级的实施情况,您可以选择一个而不是另一个。