成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

編譯時和運行時

yhaolpz / 2836人閱讀

摘要:的引用變量有兩個類型,一個是編譯時類型,一個是運行時類型,編譯時類型由聲明該變量時使用的類型決定,運行時類型由實際賦給該變量的對象決定。如果編譯時類型和運行時類型不一致,會出現(xiàn)所謂的多態(tài)。

Java的引用變量有兩個類型,一個是編譯時類型,一個是運行時類型,編譯時類型由聲明該變量時使用的類型決定,運行時類型由實際賦給該變量的對象決定。如果編譯時類型和運行時類型不一致,會出現(xiàn)所謂的多態(tài)。因為子類其實是一種特殊的父類,因此java允許把一個子類對象直接賦值給一個父類引用變量,無須任何類型轉(zhuǎn)換,或者被稱為向上轉(zhuǎn)型,由系統(tǒng)自動完成。

引用變量在編譯階段只能調(diào)用其編譯時類型所具有的方法,但運行時則執(zhí)行它運行時類型所具有的方法,因此,編寫Java代碼時,引用變量只能調(diào)用聲明該變量所用類里包含的方法。與方法不同的是,對象的屬性則不具備多態(tài)性。通過引用變量來訪問其包含的實例屬性時,系統(tǒng)總是試圖訪問它編譯時類所定義的屬性,而不是它運行時所定義的屬性。

所謂的編譯期,就是將Java代碼編譯成.class文件的過程,該過程只涉及到語法句法的正確與否,不涉及內(nèi)存方面及執(zhí)行方面的檢查。
所謂的運行期,就是Java虛擬機執(zhí)行.class文件的過程。該過程會涉及到內(nèi)存調(diào)用。實際類型檢查等方面。

關(guān)于動態(tài)綁定,在調(diào)用該引用實例的方法的時候,會優(yōu)先去調(diào)用該實例引用的運行時方法,也就是實際類型的方法。而在調(diào)用該引用實例的成員變量的時候,會優(yōu)先去調(diào)用該實例應(yīng)用的編譯時的成員變量,也就是聲明的類型的成員變量。對于,調(diào)用引用實例的方法,在編譯時,是調(diào)用聲明類型的成員方法(多態(tài)的實現(xiàn)原理),也就是所謂的編譯時類型的方法,而到了運行時,調(diào)用的是實際的類型的成員方法,也就是所謂的運行時類型的方法。而對于調(diào)用引用實例的成員變量,在編譯時,即是調(diào)用聲明類型的成員變量,在運行時更是調(diào)用聲明類型的成員變量,也就時說,對于調(diào)用引用實例的成員變量,無論是編譯時還是運行時,均是調(diào)用編譯時類型的成員變量。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/66105.html

相關(guān)文章

  • Go 1.17 發(fā)布,主要更新了工具鏈、運行庫的實現(xiàn)

    摘要:主要更新在工具鏈運行時和庫的實現(xiàn)方面。類型的表達式現(xiàn)在可以被轉(zhuǎn)換為數(shù)組指針類型。特別是,正確使用的現(xiàn)有程序仍然有效,而新程序在使用或時仍然必須遵循規(guī)則。請注意,從到數(shù)組指針的新轉(zhuǎn)換是類型轉(zhuǎn)換在運行時可能發(fā)生恐慌的第一種情況。 .markdown-body{color:#595959;font-size:15px;font-family:-apple-system,system-ui...

    longmon 評論0 收藏0
  • JavaScript如何工作:引擎,運行調(diào)用堆棧的概述

    摘要:如果我們進入一個函數(shù),我們在堆棧的頂部??纯聪旅娴拇a當引擎開始執(zhí)行此代碼時,調(diào)用堆棧將為空。之后,步驟如下調(diào)用堆棧中的每個條目稱為堆棧幀。這正是拋出異常時構(gòu)造堆棧跟蹤的方式當異常發(fā)生時,它基本上是調(diào)用堆棧的狀態(tài)。 隨著JavaScript越來越受歡迎,團隊正在利用這個技術(shù)棧在多個層次- 前端,后端,混合應(yīng)用程序,嵌入式設(shè)備等等提供支持。 這篇文章旨在成為系列中第一個旨在深入挖掘Jav...

    wwolf 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<