<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### [方法調用綁定](https://lingcoder.gitee.io/onjava8/#/book/09-Polymorphism?id=%e6%96%b9%e6%b3%95%e8%b0%83%e7%94%a8%e7%bb%91%e5%ae%9a) 將一個方法調用和一個方法主體關聯起來稱作*綁定*。若綁定發生在程序運行前(如果有的話,由編譯器和鏈接器實現),叫做*前期綁定*。你可能從來沒有聽說這個術語,因為它是面向過程語言不需選擇默認的綁定方式,例如在 C 語言中就只有*前期綁定*這一種方法調用。 上述程序讓人困惑的地方就在于前期綁定,因為編譯器只知道一個**Instrument**引用,它無法得知究竟會調用哪個方法。 解決方法就是*后期綁定*,意味著在運行時根據對象的類型進行綁定。后期綁定也稱為*動態綁定*或*運行時綁定*。當一種語言實現了后期綁定,就必須具有某種機制在運行時能判斷對象的類型,從而調用恰當的方法。也就是說,編譯器仍然不知道對象的類型,但是方法調用機制能找到正確的方法體并調用。每種語言的后期綁定機制都不同,但是可以想到,對象中一定存在某種類型信息。 Java 中除了**static**和**final**方法(**private**方法也是隱式的**final**)外,其他所有方法都是后期綁定。這意味著通常情況下,我們不需要判斷后期綁定是否會發生——它自動發生。 為什么將一個對象指明為**final**?正如前一章所述,它可以防止方法被重寫。但更重要的一點可能是,它有效地”關閉了“動態綁定,或者說告訴編譯器不需要對其進行動態綁定。這可以讓編譯器為**final**方法生成更高效的代碼。然而,大部分情況下這樣做不會對程序的整體性能帶來什么改變,因此最好是為了設計使用**final**,而不是為了提升性能而使用。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看