摘要:的引用變量有兩個類型,一個是編譯時類型,一個是運行時類型,編譯時類型由聲明該變量時使用的類型決定,運行時類型由實際賦給該變量的對象決定。如果編譯時類型和運行時類型不一致,會出現所謂的多態。
Java的引用變量有兩個類型,一個是編譯時類型,一個是運行時類型,編譯時類型由聲明該變量時使用的類型決定,運行時類型由實際賦給該變量的對象決定。如果編譯時類型和運行時類型不一致,會出現所謂的多態。因為子類其實是一種特殊的父類,因此java允許把一個子類對象直接賦值給一個父類引用變量,無須任何類型轉換,或者被稱為向上轉型,由系統自動完成。
引用變量在編譯階段只能調用其編譯時類型所具有的方法,但運行時則執行它運行時類型所具有的方法,因此,編寫Java代碼時,引用變量只能調用聲明該變量所用類里包含的方法。與方法不同的是,對象的屬性則不具備多態性。通過引用變量來訪問其包含的實例屬性時,系統總是試圖訪問它編譯時類所定義的屬性,而不是它運行時所定義的屬性。
所謂的編譯期,就是將Java代碼編譯成.class文件的過程,該過程只涉及到語法句法的正確與否,不涉及內存方面及執行方面的檢查。
所謂的運行期,就是Java虛擬機執行.class文件的過程。該過程會涉及到內存調用。實際類型檢查等方面。
關于動態綁定,在調用該引用實例的方法的時候,會優先去調用該實例引用的運行時方法,也就是實際類型的方法。而在調用該引用實例的成員變量的時候,會優先去調用該實例應用的編譯時的成員變量,也就是聲明的類型的成員變量。對于,調用引用實例的方法,在編譯時,是調用聲明類型的成員方法(多態的實現原理),也就是所謂的編譯時類型的方法,而到了運行時,調用的是實際的類型的成員方法,也就是所謂的運行時類型的方法。而對于調用引用實例的成員變量,在編譯時,即是調用聲明類型的成員變量,在運行時更是調用聲明類型的成員變量,也就時說,對于調用引用實例的成員變量,無論是編譯時還是運行時,均是調用編譯時類型的成員變量。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66105.html
摘要:主要更新在工具鏈運行時和庫的實現方面。類型的表達式現在可以被轉換為數組指針類型。特別是,正確使用的現有程序仍然有效,而新程序在使用或時仍然必須遵循規則。請注意,從到數組指針的新轉換是類型轉換在運行時可能發生恐慌的第一種情況。 .markdown-body{color:#595959;font-size:15px;font-family:-apple-system,system-ui...
摘要:如果我們進入一個函數,我們在堆棧的頂部??纯聪旅娴拇a當引擎開始執行此代碼時,調用堆棧將為空。之后,步驟如下調用堆棧中的每個條目稱為堆棧幀。這正是拋出異常時構造堆棧跟蹤的方式當異常發生時,它基本上是調用堆棧的狀態。 隨著JavaScript越來越受歡迎,團隊正在利用這個技術棧在多個層次- 前端,后端,混合應用程序,嵌入式設備等等提供支持。 這篇文章旨在成為系列中第一個旨在深入挖掘Jav...
閱讀 4270·2021-09-26 10:11
閱讀 2666·2021-07-28 00:37
閱讀 3223·2019-08-29 15:29
閱讀 1178·2019-08-29 15:23
閱讀 3124·2019-08-26 18:37
閱讀 2468·2019-08-26 10:37
閱讀 597·2019-08-23 17:04
閱讀 2347·2019-08-23 13:44