不行怎么行,这是基础。下面程序请先分析,如果结果(用白色字体是输出结果)正确,说明您对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
}
}
测试完自己的输出,可以用鼠标选中下一行,检查。