Android代碼塊執(zhí)行順序分析總結(jié)
本文介紹了Android代碼塊執(zhí)行順序分析總結(jié),分享給大家,具體如下:
子類、父類變量,代碼塊,以及構(gòu)造方法的加載順序,是我們在程序開發(fā)中時不時遇到的一個問題,也是比較容易混淆的。
基礎準備:
- 變量: 成員變量(叫類變量、實例變量)和局部變量
- 方法: 成員方法和構(gòu)造方法
- 代碼塊:普通代碼塊、構(gòu)造代碼塊、靜態(tài)代碼塊、同步代碼塊
測試的父類:
public class ParentClass { public static String name = "爸爸"; public int age = 40; public ParentClass(){ System.out.println("父類構(gòu)造函數(shù)"); } //非靜態(tài)代碼塊 { System.out.println("父類非靜態(tài)代碼塊" + "---" + age); } //靜態(tài)代碼塊 static{ System.out.println("父類靜態(tài)代碼塊" + "---" + name); } }
測試的子類:
public class ChildrenClass extends ParentClass{ public static String name = "兒子"; public int age = 15; public ChildrenClass(){ System.out.println("子類構(gòu)造函數(shù)"); } { System.out.println("子類非靜態(tài)代碼塊" + "---" + age); } static { System.out.println("子類靜態(tài)代碼塊" + "---" + name); } }
執(zhí)行new ChildrenClass()結(jié)果:
結(jié)果分析:
父類靜態(tài)代碼塊執(zhí)行前,父類靜態(tài)變量就已經(jīng)執(zhí)行了。
父類非靜態(tài)代碼塊執(zhí)行前,父類非靜態(tài)變量就已經(jīng)執(zhí)行了。
上面結(jié)論子類同理。
代碼塊執(zhí)行順序總結(jié):
父類的靜態(tài)成員變量—->父類靜態(tài)代碼塊—->子類靜態(tài)成員變量—->子類靜態(tài)代碼塊—>父類非靜態(tài)變量—->父類非靜態(tài)代碼塊—->父類構(gòu)造方法—->子類非靜態(tài)變量—->子類非靜態(tài)代碼塊—->子類構(gòu)造方法。
另外關于代碼塊的總結(jié):
- 在類第一次調(diào)用時,靜態(tài)代碼塊只執(zhí)行這一次。
- 靜態(tài)代碼塊和靜態(tài)方法只能調(diào)用靜態(tài)變量;
- 非靜態(tài)代碼塊和非靜態(tài)方法可以調(diào)用任何(靜態(tài)+非靜態(tài))變量。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

Android實現(xiàn)帶動畫效果的可點擊展開TextView

Android json數(shù)據(jù)解析詳解及實例代碼

android使用include調(diào)用內(nèi)部組件的方法