【问题标题】:What's the point of being able to declare an object but not instantiating it能够声明一个对象但不能实例化它有什么意义
【发布时间】:2015-01-04 07:58:01
【问题描述】:

例如:

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

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

【问题讨论】:

  • 为什么Java要在声明变量的时候自动实例化?
  • 您可以将声明用作全局变量,稍后您可以使用它。主要在 PolyMorphism 中(基类引用可以引用任何子类对象)
  • 用什么初始化它?

标签: java oop initialization instantiation


【解决方案1】:

您可能希望为变量分配对在别处创建的实例的引用,因此自动创建实例没有意义。

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

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

【讨论】:

    【解决方案2】:

    为什么Java不自动实例化变量时 宣布?对象未实例化的变量是否有目的?

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

    您可以声明一个变量并仅在需要时实例化它。这是条件代码中一种很好的内存节省技术:仅在需要的情况下实例化/使用引用。

    【讨论】:

    • 在什么情况下会初始化?? (通常如果你声明和使用你会得到空指针异常)
    • @Prashant 是的,这是实例字段对象的“默认”值,当然“实例化”可能不是正确的术语
    • @MadProgrammer 你是对的,初始化 apt 词而不是实例化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    相关资源
    最近更新 更多