JAVA子父类内部程序的执行顺序
******************************************************************
一、父类的静态成员赋值和静态块
二、子类的静态成员赋值和静态块
三、父类的成员赋值和初始化块
四、父类的构造方法
五、子类的成员赋值和初始化块
六、子类的构造方法
*********************************************************************
程序实例:
结果输出为
A
D
B
C
E
G
Student2 : zhangsan
zhangsan is work
******************************************************************
一、父类的静态成员赋值和静态块
二、子类的静态成员赋值和静态块
三、父类的成员赋值和初始化块
四、父类的构造方法
五、子类的成员赋值和初始化块
六、子类的构造方法
*********************************************************************
程序实例:
public class Student2 extends User2{
static{//静态块
System.out.println("D");
}
{//初始化块
System.out.println("E");
}
public Student2(){
System.out.println("F");
}
public Student2(String userName){
this.userName = userName;
System.out.println("Student2 : "+userName);
}
public void work(){
System.out.println(this.userName + "is work");
}
public static void main(String[] args) {
Student2 s = new Student2("zhangsan");
s.work();
}
{//若有两个初始化块,则顺序执行
System.out.println("G");
}
}
class User2{
protected String userName;
static{
System.out.println("A");
}
{
System.out.println("B");
}
public User2(){
System.out.println("C");
}
public User2(String userName){
System.out.println("User2 : "+userName);
this.userName = userName;
}
public void work(){
System.out.println("User2 : work");
}
}
结果输出为
A
D
B
C
E
G
Student2 : zhangsan
zhangsan is work