JAVA8新特性——接口定義加強

  JAVA9都要出來了,JAVA8新特性都沒搞清楚,是否是有點掉隊哦~java

接口定義加強編程

  在JDK1.8之前,接口是定義的:編程語言

     接口(英文:Interface),在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口一般以interface來聲明。一個類經過繼承接口的方式,從而來繼承接口的抽象方法。ide

  在JDK1.8以前,接口有以下特性:spa

  • 接口中每個方法也是隱式抽象的,接口中的方法會被隱式的指定爲 public abstract(只能是 public abstract,其餘修飾符都會報錯)。
  • 接口中能夠含有變量,可是接口中的變量會被隱式的指定爲 public static final 變量(而且只能是 public,用 private 修飾會報編譯錯誤)。
  • 接口中的方法是不能在接口中實現的,只能由實現接口的類來實現接口中的方法。

  而如今,JDK1.8,打破常規,加強接口定義:code

  容許在接口中定義普通方法,用defaultstatic關鍵字修飾。固然,用這兩個關鍵字定義也有些許不一樣。對象

  用default關鍵字定義方法:在接口中使用default關鍵字定義方法,須要添加方法體,default見名思意就是說,爲這個方法提供一個默認寫好的方法體實現。固然,在子接口中也能夠繼續去覆寫它。blog

 1 interface  MyInterface{
 2      void Method();//接口中原始定義方法的方式
 3 
 4      default void dMethod() {
 5         System.out.println("default 定義的方法!");
 6     }
 7 }
 8 class  InterfaceImpl implements  MyInterface{
 9 
10     @Override
11     public void Method() {//沒用default關鍵字定義的方法,實現接口,就必需要覆寫接口中的方法
12         System.out.println("Hello World!");
13     }
14 
15 //    @Override
16 //    public void dMethod() {
17 //        System.out.println("固然,也能夠去覆寫dMethod!");
18 //    }
19 }
20 public class Main {
21         public static void main(String[] args){
22             InterfaceImpl anInterface = new InterfaceImpl();
23             anInterface.Method();
24             anInterface.dMethod();//調用default方法,輸出:"default 定義的方法!"
25         }
26 }

  用Static關鍵字定義方法:咱們知道,在java中,使用static關鍵字修飾的方法叫作靜態方法,它不依賴於某個對象就能夠訪問。在接口中定義static方法也是如此,能夠經過接口名直接調用。繼承

 1 interface  MyInterface1{
 2 
 3     static void sMethod() {
 4         System.out.println("static 定義的方法!");
 5     }
 6 }
 7 public class Main1 {
 8     public static void main(String[] args){
 9         MyInterface1.sMethod();//直接由接口名調用static方法。
10     }
11 }

  總之,接口裏面使用default和static定義方法的意義是避免子類重複實現一樣的代碼。 接口

相關文章
相關標籤/搜索