【问题标题】:what's really the point of 'new' operator in Java? [duplicate]Java中“新”运算符的真正意义是什么? [复制]
【发布时间】:2017-01-10 13:10:32
【问题描述】:

如果“构造函数”在我们创建对象时分配内存并初始化实例变量,那么我们为什么要说Object o = new Object();? 为什么不只是Object o = Object();

new 运算符实际上是做什么的?

【问题讨论】:

标签: java


【解决方案1】:

构造函数只初始化预先存在的对象。区分构造函数和方法调用的方法是new 关键字。例如你可以在Object 类中有一个名为Object 的方法,但这可能不会创建任何东西。当你有子类时,这就更令人困惑了。

class A {
    A() { } // constructor
    static A A() { return new A(); } // method
    static A B() { return new A(); } // method
}

class B extends A {
    B() { }
}

A b = new B(); // creates a B
A a = B.B(); // creates an A

new 关键字的意义在于明确何时创建新对象。

顺便说一句,您可以有一个工厂方法,它按照您的建议返回一个新对象,但是明确表示它可能会被认为更清楚它实际上在做什么。

【讨论】:

    【解决方案2】:

    这就像避免名称冲突一样。

    假设您有一个具有方法 C、D 和 E 的类 A,但您还有另一个名为 D 的类,您想在 A 中创建它的一个实例。

    如果没有类似 new 的东西,那么编译器将不会知道您是否要调用该方法或创建一个新对象。

    【讨论】:

      猜你喜欢
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      • 2012-06-15
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 2015-11-16
      相关资源
      最近更新 更多