在實現Java介面時,能否只覆蓋一個方法?
Java中的介面是方法原型的規範。無論何時你需要指導程式設計師,或者制定一個合同來指定型別的行為(方法和欄位),你都可以定義一個介面。
要建立此型別的物件,你需要實現此介面,為介面的所有抽象方法提供主體,並獲取實現類的物件。
示例
interface Sample { void demoMethod1(); void demoMethod2(); void demoMethod3(); } public class InterfaceExample implements Sample { public void demoMethod1() { System.out.println("This is demo method-1"); } public void demoMethod2() { System.out.println("This is demo method-2"); } public void demoMethod3() { System.out.println("This is demo method-3"); } public static void main(String args[]) { InterfaceExample obj = new InterfaceExample(); obj.demoMethod1(); obj.demoMethod1(); obj.demoMethod3(); } }
輸出
This is demo method-1 This is demo method-2 This is demo method-3
在實現介面時,必須覆蓋所有抽象方法,如果跳過覆蓋任何抽象方法,則會生成編譯時錯誤。
示例
interface Sample { void demoMethod1(); void demoMethod2(); void demoMethod3(); } public class InterfaceExample implements Sample { public void demoMethod1() { System.out.println("This is demo method-1"); } public void demoMethod2() { System.out.println("This is demo method-2"); } public static void main(String args[]) { InterfaceExample obj = new InterfaceExample(); obj.demoMethod1(); obj.demoMethod2(); } }
輸出
InterfaceExample.java:6: error: InterfaceExample is not abstract and does not override abstract method demoMethod3() in Sample public class InterfaceExample implements Sample{ ^ 1 error
但是,如果你只想覆蓋一個抽象方法 -
你可以將其餘方法保持未實現,如下所示 -
示例
interface Sample { void demoMethod1(); void demoMethod2(); void demoMethod3(); } public class InterfaceExample implements Sample { public void demoMethod1() { System.out.println("This is demo method-1"); } public void demoMethod2() { } public void demoMethod3() { } public static void main(String args[]) { InterfaceExample obj = new InterfaceExample(); obj.demoMethod1(); obj.demoMethod2(); obj.demoMethod3(); } }
輸出
This is demo method-1
由於不必強制實現介面的預設方法,你可以將其餘方法宣告為預設,如下所示 -
示例
interface Sample { void demoMethod1(); default void demoMethod2() { System.out.println("Default demo method 2"); } default void demoMethod3() { System.out.println("Default demo method 3"); } } public class InterfaceExample implements Sample { public void demoMethod1() { System.out.println("This is demo method-1"); } public static void main(String args[]) { InterfaceExample obj = new InterfaceExample(); obj.demoMethod1(); obj.demoMethod2(); obj.demoMethod3(); } }
輸出
This is demo method-1 Default demo method 2 Default demo method 3
廣告