Java虚拟机执行引擎多态的实现
生活随笔
收集整理的這篇文章主要介紹了
Java虚拟机执行引擎多态的实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在java中多態的表現為:重寫(override)和重載(overload)
重載(overload 就是在同一個類中寫多個方法名相同的方法)是java的靜態分派:
Java方法重載是根據傳入參數的數量和參數類型,由于傳入的參數類型和數量已已知的并且用傳入的靜態類型而不是實際類型作為參數來判定依據。而靜態類型在編譯器是已知的,那么在編譯期,javac編譯器就會根據靜態類型來判斷使用哪個重載版本的方法,并將方法寫入字節碼中。
重寫(override子類繼承父類的方法,并覆蓋了父類的方法)是java動態分派:
1.java動態分派是根據虛擬機棧的棧幀的操作數棧來確定了實際類型,類型記作C
2.根據C的實際類型,在C類中匹配與返回類型,簡單名稱都符合的方法,再進行權限驗證,如果相同,則返回方法的引用,并查找結束;如果不通過,則返回java.lang.IllegalAccessError異常;
3.如果查找未結束,則從子類到父類由下往上依次匹配第2部的搜索過程;
4.如果未查找到目標結果,則返回java.lang.abstractMethodError異常;
轉載于:https://www.cnblogs.com/yankang/p/6399019.html
總結
以上是生活随笔為你收集整理的Java虚拟机执行引擎多态的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NOIP2014】子矩阵
- 下一篇: Javascript的原型链图