<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Java 覆蓋最終靜態方法 – 方法是覆蓋還是隱藏? > 原文: [https://howtodoinjava.com/oops/understanding-the-compiler-error-message-when-hiding-final-static-methods/](https://howtodoinjava.com/oops/understanding-the-compiler-error-message-when-hiding-final-static-methods/) 我們可以覆蓋 Java 中的靜態方法嗎? 好吧,我們所有人都知道[方法覆蓋和方法隱藏](https://docs.oracle.com/javase/tutorial/java/IandI/override.html "method overriding and method hiding")。 您是否嘗試過**覆蓋靜態方法**,特別是在父類中方法為`final`時。 ## 覆蓋最終靜態方法的 Java 程序 下面是我編寫的用于測試各種關鍵字組合的程序。 因此,請參考該程序進行進一步的討論。 ```java package staticTest; class SuperClass { static void display() { System.out.println("Super"); } } class SubClass extends SuperClass { static void display() { System.out.println("Sub"); } } public class Test { public static void main(String[] args) { // Prints "Super" in console SuperClass sup = new SubClass(); sup.display(); // Prints "Sub" in console SubClass sub = new SubClass(); sub.display(); } } ``` ## 是方法覆蓋還是方法隱藏? 1. 上面的代碼將成功編譯,而不會發出警告或錯誤。 **方法隱藏**就是這種情況,子類的靜態方法從超類隱藏了靜態方法。 2. 如果我們從子類的顯示方法中刪除`static`關鍵字,則編譯器會報錯您**無法覆蓋超類的靜態方法**。 眾所周知,靜態方法不能被覆蓋。 它們只能從子類中隱藏。 因此,這種情況下的編譯器消息應被認為是錯誤的。 **正確消息**應該為“實例方法無法從超類“隱藏”靜態方法”。 現在在上面的代碼示例中,將`final`添加到超類的顯示方法中。 再次,編譯器開始報錯“**無法從超類覆蓋最終方法**”。 由于上述原因,這也會產生誤導。 在這里,正確的消息也應該是“無法**隱藏**超類的最終方法” ## 總結 為什么在 Java 中不能覆蓋靜態方法? 以我的觀點,**方法覆蓋**僅在我們使用實例方法進行討論時才有效。 一旦我們開始談論靜態方法,就應該使用隱藏的**方法**。 幸運的是,以上術語已在大多數 Java 文獻中使用(甚至在 Java 語言規范中也是如此),但我想仍然必須對其進行更新。 請讓我知道您對 Java 覆蓋最終靜態方法的想法,為什么在 Java 中不能覆蓋靜態方法,而在 Java 中我們可以覆蓋非靜態方法呢? 學習愉快!
                  <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>

                              哎呀哎呀视频在线观看