1.一般情况
父类静态变量以及静态程序块 — 子类的静态变量以及静态程序块 —main()(如果是从main里面执行)—- 父类非静态代码块 — 父类中构造方法 — 子类中非静态代码块 — 子类中构造方法
(首先是加载main所在的类(类如果有父类,会先执行父类的静态成员初始化)初始化其中的静态成员和域,,然后是main方法中执行)
2.
子类重写父类方法,父类中执行该方法时候会执行子类的方法
1 class Super { 2 int i = 10; 3 4 { 5 print();//都将执行子类方法 6 } 7 8 Super() { 9 print();//都将执行子类方法 10 i = 20; 11 } 12 //并且此时的子类属性未初始化完成,此时j=0; 13 14 void print() { 15 System.out.print(i); 16 } 17 } 18 19 class Sub extends Super { 20 int j = 30; 21 22 Sub() { 23 print(); 24 j = 40; 25 } 26 27 void print() { 28 System.out.print(j); 29 } 30 31 public static void main(String[] args) { 32 new Sub();//输出结果是0030 33 } 34 }
转载于:https://www.cnblogs.com/straybirds/p/5208453.html