【发布时间】:2011-12-19 08:40:48
【问题描述】:
我刚刚与一些同事讨论了 Java 构造函数、设计模式以及使用未参数化构造函数初始化对象的好方法(如果我通常等待一些参数)。
其中一位年长的人想出了他的实现方式,总是这样:
public class Foo {
public Foo() {
this(0,0,0);
}
public Foo(int a, int b, int c) {
this.a = a;
this.b = b;
this.c = c;
}
..
}
我的问题是,这种风格是否很好,它的行为究竟是什么?
据我了解应该是:
- 它首先实例化一个对象,然后调用参数化构造函数以使用该参数设置构造该类型的新对象,并将其自己的引用设置为新对象。所以 GC 必须删除第一个创建的。
【问题讨论】:
-
实例化对象的不是构造函数,而是
new关键字。构造函数只负责初始化对象。 -
所以分配内存的总是new关键字,而构造函数只是对象的收费? (也适用于 c++?)
标签: java design-patterns coding-style