源代碼: public class test09 { public static void main(String[] args) { Person p = new Student(); p.say(); System.out.println(p.s); } } class Person{ String s = "fu"; public Person(){ System.out.println("父類構(gòu)造函數(shù)開(kāi)始運(yùn)行"); } { System.out.println("父類構(gòu)造代碼塊開(kāi)始運(yùn)行"); } static{ System.out.println("父類靜態(tài)代碼塊開(kāi)始運(yùn)行"); } public void say(){ System.out.println("我是父類"); } } class Student extends Person{ String s = "zi"; public Student(){ System.out.println("子類構(gòu)造函數(shù)執(zhí)行"); } { System.out.println("子類構(gòu)造代碼塊開(kāi)始運(yùn)行"); } static{ System.out.println("子類靜態(tài)代碼塊開(kāi)始運(yùn)行"); } public void say(){ System.out.println("我是子類"); } } 運(yùn)行結(jié)果: 父類靜態(tài)代碼塊開(kāi)始運(yùn)行 子類靜態(tài)代碼塊開(kāi)始運(yùn)行 父類構(gòu)造代碼塊開(kāi)始運(yùn)行 父類構(gòu)造函數(shù)開(kāi)始運(yùn)行 子類構(gòu)造代碼塊開(kāi)始運(yùn)行 子類構(gòu)造函數(shù)執(zhí)行 我是子類 fu 總結(jié): 1、當(dāng)創(chuàng)建子類對(duì)象時(shí),先運(yùn)行的是父類的靜態(tài)代碼塊,然后運(yùn)行的是子類的靜態(tài)代碼塊; 2、接著就是運(yùn)行父類的構(gòu)造代碼塊和構(gòu)造函數(shù); 3、接著就是運(yùn)行子類的構(gòu)造代碼塊和子類的構(gòu)造函數(shù); 4、當(dāng)引用調(diào)用方法時(shí),調(diào)用的是父類的方法還是子類的方法,取決于引用所指向的對(duì)象; 5、當(dāng)引用調(diào)用屬性時(shí),調(diào)用的是父類的屬性還是子類的屬性,取決于引用的類型
|
|
來(lái)自: 奮斗小青年lh > 《java學(xué)習(xí)》