在實現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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP