<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                原文鏈接:[Java 8 之默認方法(Default Methods)](http://blog.csdn.net/kimylrong/article/details/47277577) --- Oracle官網是這樣介紹默認方法的,使用默認方法,可以達到往接口里面增加新的功能,而且保持與老版本代碼兼容,也就是原來的實現類可以不需要被動修改。所以,默認方法位置是在接口里面;默認方法具有實現,不會強制具體類來現。Java 8要充分利用Lambda,需要增強大量的類庫,但是又希望做到兼容性,只能用默認方法這個大招。 ## 默認方法 默認方法與普通的接口方法相比,最前面增加**default**關鍵字,參數列表之后接大括號,實現該方法,再后面沒有分號。 ### 默認方法的例子 ~~~ public interface Player { String getName(); default boolean isMale() { return true; } } ~~~ ### 擴展包含默認方法的接口 當一個接口擴展另外一個包含默認方法的接口的時候,有以下3種處理方式。 * **完全無視默認方法**? 直接繼承了上級接口的默認方法 * **重新申明默認方法**? 重新把默認方法申明為抽象方法(無實現,具體子類必需再次實現該方法) * **重新實現默認方法**? 重寫了默認方法的實現,依然是一個默認方法。 抽象類實現包含默認方法的接口和上述描述一樣。具體類實現包含默認方法的接口的,沒有第二條。 ## 接口靜態方法 Java 8 接口也可以有靜態方法了。靜態方法,從職責定位來講,就是個工具方法。 ~~~ public interface Player { String getName(); public static void printContact(Contact contact) { // TODO print contact for play in the following } } ~~~ ## 接口與抽象類 記得在什么地方看到過,Java之父說,再給他一次設計Java的機會,Java里就不會有抽象類。面試的時候也有很多時候問接口與抽象類的區別。 總的來說抽象類和接口越來越接近了,是接口向抽象類靠近,剝奪抽象類的生存空間。? 默認方法和接口靜態方法都是重型武器。 * **與抽象類相比,接口不能搞定的** * 抽象類能夠定義非 static final 的屬性(field)? ,而接口不能。接口的屬性都是static final的。 * 抽象類能夠定義非public方法,而接口不能。接口的方法都是public的。 * **與接口相比,抽象類不能搞定的** * 接口可以多繼承(實現),而抽象類不能。抽象類只能單繼承。 ## 結語 雖然默認方法在JDK里面主要用于擴展已有類庫,不過新的項目默認方法依然很有價值。? 曾今的寫接口,寫抽象類,寫具體類這個流程,某些時候可以省去中間的這個步驟。而且接口里面也可以存放一些工具方法了(接口靜態方法)。不過,記得接口的方法都是public的,如果想要嚴格控制訪問,那么還得使用抽象類。
                  <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>

                              哎呀哎呀视频在线观看