-1

假设我有一个类B,它有一个类C类型成员作为字段。

现在我写了一个构造函数,B这样它的默认构造函数就不会被合成。

但是B's构造函数不会C显式初始化该类型字段。

Class B
{
  C obj_c;

  B()
  { }
}

在 C++ 中,默认构造函数obj_c将被称为因为非初始化成员的默认构造函数将被隐式调用为 Object 类型成员。Java 呢?

如果构造函数不初始化 Java 中的字段会发生什么?

4

2 回答 2

7

未初始化的成员变量会自动初始化false为布尔值、0数字和null对象引用,这就是obj_c这里的位置。它被初始化为null.

编辑

将其初始化为的不是构造函数null;根据Java Language Specification,如果您不初始化类变量和实例变量,Java 将初始化它们。

于 2013-03-11T20:49:04.707 回答
1

C 的构造函数不会被隐式调用。它必须通过字段初始化或构造函数的设置显式调用。

于 2013-03-11T20:49:06.710 回答