类和对象的初始化顺序
父类
package com.day06; public class StaticDemo { //静态代码块 int num=3; static{ System.out.println("父类静态代码块 --A"); } //构造代码块 { System.out.println("父类构造代码块 ---A "+this.num); } public StaticDemo(){ System.out.println("父类构造方法---A"); } public void show(){ System.out.println("父类普通方法--- A"); } }
子类:
package com.day06; public class StaticDemoB extends StaticDemo { //静态代码块 int num=3; static{ System.out.println("子类静态代码块 B"); } //构造代码块 { System.out.println("子类构造代码块 B "+this.num); } public StaticDemoB(){ System.out.println("子类构造方法 B" ); } public void show(){ System.out.println("子类普通方法 B"); } }
示例一:实例化父类
package com.day06; public class StaticDemoTest { public static void main(String[] args) { //new StaticDemo().show(); StaticDemo sd=new StaticDemo(); sd.show(); } }
结果:
父类静态代码块 --A 父类构造代码块 ---A 3 父类构造方法---A 父类普通方法--- A
示例二、实例化子类
package com.day06; public class StaticDemoTest { public static void main(String[] args) { //new StaticDemoB().show(); StaticDemoB sdb=new StaticDemoB(); sdb.show(); } }
结果:
父类静态代码块 --A 子类静态代码块 B 父类构造代码块 ---A 3 父类构造方法---A 子类构造代码块 B 3 子类构造方法 B 子类普通方法 B