[英]What's the difference between instantiating in the field and instantiating in the constructor?
[英]what's the difference between class type variables or instantiating in a constructor/method
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;
}
}
我为什么要在另一个类的构造函数中实例化一个类? 我还没有完全理解构图,所以我对所有事物的“为什么”都模糊不清
如果在方法中实例化它,则每次调用该方法时都会创建一个新的方法。 如果那没有意义-如果您希望将一个BlueToothSpeaker
对象在其生命周期内绑定到MotoXCellPhone
对象-那么您需要在构造函数中创建(或注入)它。
该参数如下:如果其他人使用您的代码,则他们可能不会调用useSpeakser()
,因此speakers
可能为null
。 实例化构造函数中的speakers
会断言它不会为null
。
实例化MotoXCell时,构造函数将运行并实例化BlueToothSpeaker,而方法仅在被调用时实例化新类。
成员初始化有两种类型,每种都有优点和缺点,我将尝试枚举它们:
早期初始化 :
延迟初始化 :
根据课程的实施情况,您可以选择一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.