假設我有一個類B
其中有一個C
類型成員字段。Java字段初始化
現在我寫了一個B
的構造函數,以便它的默認構造函數不會被合成。
但是B's
構造函數不會顯式初始化那個C
類型字段。
Class B
{
C obj_c;
B()
{ }
}
在C++缺省的obj_c
構造將被稱爲怎麼把非初始化的成員的默認構造將關於Java對象類型members.What隱含調用??
如果構造函數不初始化Java中的字段會發生什麼?
假設我有一個類B
其中有一個C
類型成員字段。Java字段初始化
現在我寫了一個B
的構造函數,以便它的默認構造函數不會被合成。
但是B's
構造函數不會顯式初始化那個C
類型字段。
Class B
{
C obj_c;
B()
{ }
}
在C++缺省的obj_c
構造將被稱爲怎麼把非初始化的成員的默認構造將關於Java對象類型members.What隱含調用??
如果構造函數不初始化Java中的字段會發生什麼?
未初始化的成員變量自動初始化爲false
爲布爾值,0
數字,並null
對象引用,這是在obj_c
落在這裏。它被初始化爲null
。
編輯
這並不是說被它初始化爲null
構造;根據Java Language Specification,如果不初始化它們,Java將初始化類變量和實例變量。
C的構造函數不是隱式調用的。必須通過字段初始化或從構造函數中設置來顯式調用它。
除非你說'obj_c = new C();','C's'構造函數不會被調用。它會一直保留爲null,直到你初始化它爲止。 – 2013-03-11 20:49:10
在這種情況下,java將obj_c初始化爲null。 – 2013-03-11 20:49:43
想象變量聲明中的每個類型名稱後都有一個'*'(如果不存在,則爲'= 0'),您將得到一些接近C++的東西。 – 2013-03-11 20:51:45