1.关于父类子类执行顺序
public class Demo {
class Super{
int flag=1;
Super(){
test();
}
void test(){
System.out.println("Super.test() flag="+flag);
}
}
class Sub extends Super{
Sub(int i){
flag=i;
System.out.println("Sub.Sub()flag="+flag);
}
void test(){
System.out.println("Sub.test()flag="+flag);
}
}
public static void main(String[] args) {
new Demo().new Sub(5);
}
}
说明:在继承中代码的执行顺序为:
(1)父类静态对象,父类静态代码块
(2)子类静态对象,子类静态代码块
(3)父类非静态对象,父类非静态代码块
(4)父类构造函数
(5)子类非静态对象,子类非静态代码块
(6)子类构造函数