Java 介面 新特性(Java8)

來源:互聯網
上載者:User

標籤:blog   版本   jdk8   bsp   http   com   解決   簽名   efault   

  Java8新特性之介面增強

  在Java7以及以前的版本中,介面裡的方法都是抽象的,並且不存在靜態方法,屬性預設修飾符是public static final。所有方法的聲明都是public [傳回型別] [方法名](參數列表) [throws 異常列表]。

  而在Java8定義的介面中存在2種有具體實現的方法,分別如下:

  1 static

  可以有靜態方法:public static  [傳回型別] [方法名](參數列表) [throws 異常列表]

  Java中可以實現多個介面,如果2個介面存在相同方法名和相同參數列表的靜態方法(即方法簽名相同),那麼[子類.父類靜態方法]不知道調用哪一個。因此,不允許使用[子類.父類靜態方法],只能通過父類名來調用靜態方法,解決了衝突問題。

  public class CImpl implements InterA, InterB

  其中,InterA和InterB存在同名靜態方法,子類也可以存在方法簽名相同的方法,但是不能用override修飾,因為靜態方法不能被重寫。

  通過介面名來調用static類型的方法。

  2 default

  方法可以有預設實現:

  public default void defaultMethod(){}  (default不能省略,只能修飾介面中的預設方法)

  子類重寫介面預設方法時,必須去掉default。

@Overridepublic void defaultMethod(){    System.out.println("子類A中的預設方法,必須去掉default修飾符");}

  定義一個類實現該介面,通過該類的執行個體來調用default類型的方法。

 

  優點

  1 避免子類代碼重複

  當多個類實現一個介面的某個方法時,如果方法的具體實現代碼相同,那麼就會造成代碼重複問題。介面增強相當於把公用的代碼提取出來,放入介面定義中,實作類別不需要重寫該方法,解決了實現該介面的子類代碼重複的問題。

  2 克服單繼承的缺陷

  介面中可以定義static或default類型這兩種有具體實現的方法,減少了介面和抽象類別之間的區別。對於子類而言,抽象類別只能單繼承,介面可以實現多個。

 

  參考資料

  jdk1.8新特性-介面

  JDK8新特性之介面總結

  java8之介面增強

Java 介面 新特性(Java8)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.