能够声明对象但不实例化它的重点是什么

时间:2015-01-04 07:58:01

标签: java oop initialization instantiation

例如:

Thread thread1 // would declare a thread variable named thread1
thread1 = new Thread() //would instantiate thread1.

为什么Java在声明变量时不会自动实例化它?是否有目的来对象未实例化的变量?

2 个答案:

答案 0 :(得分:3)

您可能希望为变量分配对其他地方创建的实例的引用,因此自动创建实例毫无意义。

此外,可能有多个构造函数可供选择,编译器不知道选择哪一个。

此外,变量的类型可以是抽象类或接口的类型,您无法为其创建实例。您只能创建实现接口的具体子类或类的实例。

答案 1 :(得分:3)

  

为什么Java不会在变量出现时自动实例化它   声明?是否有目的来对象未实例化的变量?

Java会将实例/对象变量初始化为其默认值。对象的默认值为null,对于基元,默认值为默认值。

您可以声明变量并仅在需要时将其实例化。这是条件代码中一种很好的内存保存技术:仅在需要它的场景中实例化/使用引用。