如果只有一个类,它不继承任何人。 执行结果
C....执行子类静态代码段 ======================== C....执行子类非静态代码段 C....子类构造器 C....Child public 方法 C....c1 =C....初始化子类静态属性 C....c2 =C....初始化子类实例属性 C....Child private 方法 C....c1 =C....初始化子类静态属性 C....c2 =C....初始化子类实例属性 child is com.pinganfu.pinganfuweb.web.controller.merchant.ObjectCreationOrderChildTest@24c21495
Run 子类的main函数 得到的结果:
P....初始化父类静态属性 P....执行父类静态代码段 C....初始化子类静态属性 C....执行子类静态代码段 ======================== P....初始化父类实例属性 P....执行父类非静态代码段 P....父类构造器 C....Child public 方法 C....c1 =1000 C....c2 =0 P....Parent private 方法 P....p1 =100 P....p2 =200 C....初始化子类实例属性 C....执行子类非静态代码段 C....子类构造器 C....Child public 方法 C....c1 =1000 C....c2 =2000 C....Child private 方法 C....c1 =1000 C....c2 =2000 child is ObjectCreationOrderChildTest@5f186fab
public class ObjectCreationOrderParentTest { private static int p1 = staticPrintInt("P....初始化父类静态属性", 100); private int p2 = instancePrintInt("P....初始化父类实例属性", 200); static{ System.out.println("P....执行父类静态代码段"); } { System.out.println("P....执行父类非静态代码段"); } public static int staticPrintInt(String str, int value){ System.out.println(str); return value; } public int instancePrintInt(String str, int value){ System.out.println(str); return value; } public void publicPrintProperty(){ System.out.println("P....Parent public 方法"); System.out.println("P....p1 =" + p1); System.out.println("P....p2 =" + p2); } private void privatePrintProperty(){ System.out.println("P....Parent private 方法"); System.out.println("P....p1 =" + p1); System.out.println("P....p2 =" + p2); } public ObjectCreationOrderParentTest(){ System.out.println("P....父类构造器"); publicPrintProperty(); privatePrintProperty(); } public static void main(String[] args){ ObjectCreationOrderParentTest p; System.out.println("========================"); p = new ObjectCreationOrderParentTest(); System.out.println("Parent is" + p.toString()); } }
public class ObjectCreationOrderChildTest extends ObjectCreationOrderParentTest { private static int c1 = staticPrintInt("C....初始化子类静态属性", 1000); private int c2 = instancePrintInt("C....初始化子类实例属性", 2000); static{ System.out.println("C....执行子类静态代码段"); } { System.out.println("C....执行子类非静态代码段"); } public void publicPrintProperty(){ System.out.println("C....Child public 方法"); System.out.println("C....c1 =" + c1); System.out.println("C....c2 =" + c2); } private void privatePrintProperty(){ System.out.println("C....Child private 方法"); System.out.println("C....c1 =" + c1); System.out.println("C....c2 =" + c2); } public ObjectCreationOrderChildTest(){ System.out.println("C....子类构造器"); publicPrintProperty(); privatePrintProperty(); } public static void main(String[] args){ ObjectCreationOrderChildTest c; System.out.println("========================"); c = new ObjectCreationOrderChildTest(); System.out.println("child is " + c.toString()); } }