假设我有一个B
类,其中C
类成员为字段。
现在我为B
编写了一个构造函数,以便它的默认构造函数不会被合成。
但B's
构造函数未明确初始化C
类型字段。
Class B
{
C obj_c;
B()
{ }
}
在C ++中,obj_c
的默认构造函数将被称为coz默认构造函数的非初始化成员将被隐式调用为Object类型成员。关于Java的什么?
如果构造函数没有在Java中初始化字段会发生什么?
答案 0 :(得分:7)
对于布尔值,未初始化的成员变量会自动初始化为false
,对于数字会自动初始化为0
,对象引用会自动初始化为null
,这是obj_c
落在此处的位置。它被初始化为null
。
修改强>
不是将构建器初始化为null
的构造函数;根据{{3}},如果你不初始化它们,Java将初始化类变量和实例变量。
答案 1 :(得分:1)
C的构造函数不是隐式调用的。必须通过字段初始化或构造函数设置显式调用它。