java中的接口的作用是提供編程框架,它作為統一的規范讓其他類進行擴展,是java中非常優秀的設計。
這娃用以下代碼總結了java中接口可以定義的成員以及它們默認被修飾的關鍵字:
//外部接口的訪問修飾符只能是public或默認修飾符 ,並且它的成員只能用public訪問修飾符修飾, 接口不能用final修飾 public interface A { //成員變量,默認用public static final 修飾 String name="ahei"; //成員方法,默認用public abstract 修飾 void abstractMethod(); //內部接口,默認用public static 修飾 interface Interf{} //內部類,默認用public static 修飾 class InnerClass{} //靜態方法,默認用public修飾,接口中的靜態方法不能用final修飾 static void staticMethod(){} //默認方法,可提供方法實現,作為庫、框架向前兼容的手段 default void defaultMethod(){ System.out.println("haha"); } public static void main(String[] args){ //以下說明接口中的類成員和接口成員都是默認用static修飾的 new A.Interf() { }; new A.InnerClass(); //靜態方法的調用在編譯期就已經確定,由聲明的類型決定 C c=new D(); c.set(); //輸出C //默認方法通過對象調用 new F().defaultMethod(); } } //靜態方法也能重寫,不過它們屬於各自的類,不會有運行時多態 class C { static void set() { System.out.println("C"); } } class D extends C { static void set() { System.out.println("D"); } } class F implements A{ @Override public void abstractMethod() {} }
java的接口中還可以定義枚舉類,並且接口中的靜態方法和默認方法是java8新增的,默認方法可為接口提供新的功能,並且不影響老版本代碼的實現,保證了向前兼容。