在繼承當中這些方法及程式碼塊執行順序是什麼樣的
在Java中,尤其是我們的Java基礎中,我們會學習到我們的靜態程式碼塊,構造程式碼塊,區域性程式碼塊,也會學習到構造方法和不同方法,那麼這些執行順序是什麼樣呢,我們下面來一起看一看:
我們這裡需要建立兩個類,分別是Person(普通類),Demo(測試類)
Person(普通類)
public class Person { static { System.out.println("靜態程式碼塊"); } { System.out.println("構造程式碼塊"); } public Person (){ System.out.println("構造方法"); } public void Common(){ System.out.println("普通方法"); { System.out.println("區域性程式碼塊"); } } }
Demo(測試類)
public class Demo { public static void main(String[] args) { /** * Person p = new Person(); * 靜態程式碼塊 * 構造程式碼塊 * 構造方法 * p.Common(); * 普通方法 * 區域性程式碼塊 */ Person p = new Person(); p.Common(); /** * 再這裡我們發現了一個問題,當我們第二次建立物件的時候我們的靜態程式碼塊沒有出現,那麼這個是為什麼呢? * 在這裡我們需要記住兩件事情: * 1)當我們第一次載入類的時候會執行我們的靜態程式碼塊,暫時可以理解為我們在第一次建立物件時會執行一次,之後不會再次執行 * 2)我們的構造程式碼塊,時在每次new物件之前都會執行一次 * Person p2 = new Person(); * 構造程式碼塊 * 構造方法 * p2.Common(); * 普通方法 * 區域性程式碼塊 */ Person p2 = new Person(); p2.Common(); } }
上述只是簡單的程式碼塊之前的順序,那麼在我們的繼承關係中他們的執行順序又是什麼樣的呢,下面我們再來測試以下:
我們這裡需要建立三個類,分別是Super(父類),Sub(子類),Demo(測試類)
Super(父類)
public class Super { static { System.out.println("我是父類靜態程式碼塊"); } { System.out.println("我是父類構造程式碼塊"); } public Super (){ System.out.println("我是父類構造方法"); } public void Common(){ System.out.println("我是父類普通方法"); { System.out.println("我是父類區域性程式碼塊"); } } }
Sub(子類)
public class Sub extends Super{ static { System.out.println("我是子類靜態程式碼塊"); } { System.out.println("我是子類構造程式碼塊"); } public Sub (){ System.out.println("我是子類構造方法"); } //重寫了父類的Common方法 public void Common(){ System.out.println("我是子類重寫後的普通方法"); { System.out.println("我是子類重寫後的區域性程式碼塊"); } } }
Demo(測試類)
public class Demo { public static void main(String[] args) { /*每一段都是單獨的*/ /** * Super s = new Super(); * 我是父類靜態程式碼塊 * 我是父類構造程式碼塊 * 我是父類構造方法 * s.Common(); * 我是父類普通方法 * 我是父類區域性程式碼塊 */ Super s = new Super(); s.Common(); /** * Sub a = new Sub(); * 我是父類靜態程式碼塊 * 我是子類靜態程式碼塊 * 我是父類構造程式碼塊 * 我是父類構造方法 * 我是子類構造程式碼塊 * 我是子類構造方法 * a.Comm(); * 我是子類普通方法 * 我是子類區域性程式碼塊 */
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70019613/viewspace-2923463/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java繼承關係下執行順序Java繼承
- 繼承中引數傳遞及呼叫順序繼承
- Java中建構函式、靜態程式碼塊、程式碼塊的執行順序Java函式
- Java中構造方法,構造程式碼塊和靜態程式碼塊執行順序詳解Java構造方法
- 為什麼Java中繼承是有害的Java中繼繼承
- 面試題思考:try 程式碼塊中含 return 語句時,程式碼執行順序面試題
- java中帶繼承類的載入順序詳解及實戰Java繼承
- 在java的繼承中你是否有這樣的疑惑?Java繼承
- Java 繼承是什麼?Java繼承
- Java普通程式碼塊,構造程式碼塊,靜態程式碼塊區別,執行順序的程式碼例項Java
- Java中,類與類,類中的程式碼執行順序Java
- JS繼承,中間到底幹了些什麼JS繼承
- JavaScript中的繼承及實現程式碼JavaScript繼承
- 什麼是繼承?Python繼承的特徵有哪些?繼承Python特徵
- Go包中程式碼執行順序Go
- 物件導向-繼承中的面試題:程式碼塊物件繼承面試題
- pytest 框架多個 test.py 檔案怎麼控制其執行順序,除了預設的檔名 ascii 碼順序執行還有什麼外掛或者方法可以控制其執行順序麼框架ASCII
- 在Facebook當程式設計師會是什麼樣的程式設計師
- 這樣理解,java繼承中多型的屬性和方法Java繼承多型
- return isPlainObject(res) || Array.isArray(res) ? observer(res, cb) : res; 這個的執行順序是什麼AIObjectServer
- 為什麼Java中繼承多數是有害的Java中繼繼承
- Java類(繼承)初始化順序Java繼承
- finally塊裡的程式碼是什麼時候被執行的?
- Java程式碼塊與Java繼承Java繼承
- java類內部程式碼執行順序Java
- 夯實Java基礎系列7:Java 程式碼塊和執行順序Java
- python__基礎 : 多繼承中方法的呼叫順序 __mro__方法Python繼承
- PHPWind8.7中程式碼結構與程式執行順序PHP
- php課程 1-3 web專案中php、html、js程式碼的執行順序是怎樣的(詳解)PHPWebHTMLJS
- ES6繼承和ES5繼承是完全一樣的麼?繼承
- 程式執行緒新解:什麼是程式?什麼是執行緒?執行緒
- 【JavaScript】JS引擎中執行上下文如何順序執行程式碼JavaScriptJS行程
- python3 筆記20.類的呼叫和多重繼承(多重繼承MRO方法解析順序)Python筆記繼承
- static方法在繼承中如何使用?繼承
- 運維工作中,程式執行時調整優先順序要用什麼命令?運維
- js程式碼執行順序簡單介紹JS
- 三種繼承的方法:public 繼承/private繼承/protected繼承詳解及區別繼承
- C#類中方法的執行順序C#