如果Java子類沒有覆蓋抽象方法會發生什麼?
沒有方法體的方法稱為抽象方法。它只包含方法簽名和分號,以及其前面abstract關鍵字。
public abstract myMethod();
要使用抽象方法,需要透過擴充套件其類來繼承它,併為其提供實現。
包含一個或多個抽象方法的類稱為抽象類。如果它包含至少一個抽象方法,則必須將其宣告為抽象類。
擴充套件抽象類
在Java中擴充套件抽象類後,需要覆蓋其中的所有抽象方法,或者將其宣告為抽象類。如果不這樣做,對於每個未覆蓋的抽象方法都會生成一個編譯時錯誤,提示“subclass_name不是抽象類,並且沒有覆蓋classname中的抽象方法abstractmethod_name”。
示例
下面的Java示例包含兩個抽象類:一個是包含3個抽象方法的抽象類(MyClass),另一個是名為AbstractClassExample的類,它擴充套件了前一個類。
在子類中,我們只覆蓋了一個抽象方法(display())。
import java.io.IOException;
abstract class MyClass {
public abstract void display();
public abstract void setName(String name);
public abstract void setAge(int age);
}
public class AbstractClassExample extends MyClass{
public void display(){
System.out.println("This is the subclass implementation of the display method ");
}
public static void main(String args[]) {
new AbstractClassExample().display();
}
}編譯時錯誤
編譯時,上述方法會生成以下編譯時錯誤
輸出
AbstractClassExample.java:9: error: AbstractClassExample is not abstract and does
not override abstract method setAge(int) in MyClass
public class AbstractClassExample extends MyClass{
^
1 error要使此程式工作,您需要要麼覆蓋超類的所有抽象方法,要麼使子類成為抽象類,如下所示:
abstract class MyClass {
public abstract void display();
public abstract void setName(String name);
public abstract void setAge(int age);
}
public abstract class AbstractClassExample extends MyClass{
public void display(){
System.out.println("This is the subclass implementation of the displaymethod ");
}
}
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP