不行怎麼行,這是基礎。下面程式請先分析,如果結果(用白色字型是輸出結果)正確,說明您對java類的初始化已經很熟悉,算是過關,如果沒有,那趕緊複習吧。
package nie.test.extend;
/** 子構造子的初始化過程:
* @author dotjar
* 1.父static域
* 2.父static塊
* 3.子static域
* 4.子static塊
* 5.父普通域
* 6.父普通塊{}
* 7.父構造子
* 8.子普通域
* 9.子普通塊{}
* 10.子構造子
*/
public class Test {
public static void main(String[] args) {
new Son("s");
}
}
class Father {
static protected String s = "father_static_property_string"; //1
protected String b = "father_normal_property_string"; //5
static {
s = "o"; //2
System.out.print("d");
System.out.print(s);
}
{
b="r"; //6
System.out.print("a");
System.out.print(b);
}
Father() {
this("@");
System.out.print("1"); //8
}
Father(String s) {
System.out.print(s); //7
}
}
class Son extends Father {
public static String s = "son_static_property_string"; //3
public String b = "son_normal_property_string"; //9
static {
s = "j"; //4
System.out.print("t");
System.out.print(s);
}
{
b = "3"; //10
System.out.print("6");
System.out.print(b);
}
Son() {
System.out.print("."); //11
}
Son(String s) {
this();
System.out.print("com"); //12
}
}
測試完自己的輸出,可以用滑鼠選中下一行,檢查。