在繼承當中這些方法及程式碼塊執行順序是什麼樣的
在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構造方法
- 在a標籤上的四個偽類執行順序是什麼?
- Java普通程式碼塊,構造程式碼塊,靜態程式碼塊區別,執行順序的程式碼例項Java
- Java中,類與類,類中的程式碼執行順序Java
- 在java的繼承中你是否有這樣的疑惑?Java繼承
- JavaScript中的繼承及實現程式碼JavaScript繼承
- pytest 框架多個 test.py 檔案怎麼控制其執行順序,除了預設的檔名 ascii 碼順序執行還有什麼外掛或者方法可以控制其執行順序麼框架ASCII
- Go包中程式碼執行順序Go
- 什麼是繼承?Python繼承的特徵有哪些?繼承Python特徵
- Java 繼承是什麼?Java繼承
- python__基礎 : 多繼承中方法的呼叫順序 __mro__方法Python繼承
- JS繼承,中間到底幹了些什麼JS繼承
- java類內部程式碼執行順序Java
- 夯實Java基礎系列7:Java 程式碼塊和執行順序Java
- return isPlainObject(res) || Array.isArray(res) ? observer(res, cb) : res; 這個的執行順序是什麼AIObjectServer
- 這樣理解,java繼承中多型的屬性和方法Java繼承多型
- python3 筆記20.類的呼叫和多重繼承(多重繼承MRO方法解析順序)Python筆記繼承
- php課程 1-3 web專案中php、html、js程式碼的執行順序是怎樣的(詳解)PHPWebHTMLJS
- 【JavaScript】JS引擎中執行上下文如何順序執行程式碼JavaScriptJS行程
- C#類中方法的執行順序C#
- ES6繼承和ES5繼承是完全一樣的麼?繼承
- 運維工作中,程式執行時調整優先順序要用什麼命令?運維
- pipeline的執行順序
- JavaScript程式碼執行順序和資料型別JavaScript資料型別
- 總結類初始化時的程式碼執行順序
- 【freertos】011-訊號量、互斥量及優先順序繼承機制原始碼分析繼承原始碼
- 深入瞭解Flutter的isolate(1) ---- 事件迴圈(event loop)及程式碼執行順序Flutter事件OOP
- Sql執行順序SQL
- 這次,我掌握了 pytest 中 fixture 的使用及 pytest 執行測試的載入順序
- 什麼是遠端程式碼執行漏洞?
- Java中如何保證執行緒順序執行Java執行緒
- 圖解React的生命週期及執行順序圖解React
- DNS解析順序是怎樣的?DNS
- Spring Aop的執行順序Spring
- 當我們在說“併發、多執行緒”,說的是什麼?執行緒
- CSS的三大特性(繼承、層疊和優先順序)CSS繼承