如果'构造函数'在我们创建对象时分配内存并初始化实例变量,那么我们为什么要说Object o = new Object();
?
为什么不只是Object o = Object();
?
新操作员实际上做了什么?
答案 0 :(得分:5)
构造函数仅初始化预先存在的对象。告诉构造函数和方法调用之间区别的方法是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
关键字的要点是在创建新对象时明确。
顺便说一下你可以有一个工厂方法,按照你的建议返回一个新对象,但是要明确它可能会被认为更清楚它实际上在做什么。
答案 1 :(得分:-1)
这样可以避免名称冲突。
假设您有一个带有方法C,D和E的A类,但您还有另一个名为D的类,您想在A中创建一个实例。
如果没有像new那样的东西,那么如果你想调用方法或者创建一个新对象,那么编译器就没有想法。