為什麼 Java 類不能同時是抽象類和最終類?
抽象類
包含 0 個或多個抽象方法的類稱為抽象類。如果它包含至少一個抽象方法,則必須將其宣告為抽象類。
如果要使用抽象類中的具體方法,則需要繼承該類,為抽象方法(如果有)提供實現,然後使用子類物件呼叫所需的方法。
示例
在以下 Java 示例中,抽象類 MyClass 包含一個名為 display 的具體方法。
從另一個類(AbstractClassExample)中,我們繼承了 MyClass 類並使用子類物件呼叫其具體方法 display。
abstract class MyClass {
public void display() {
System.out.println("This is a method of abstract class");
}
}
public class AbstractClassExample extends MyClass {
public static void main(String args[]) {
new AbstractClassExample().display();
}
}輸出
This is a method of abstract class
最終類
如果宣告一個類為 final,則不能擴充套件它。如果嘗試擴充套件最終類,則會生成一個編譯時錯誤,提示“無法從最終的 SuperClass 繼承”。
示例
在以下 Java 程式中,我們有一個名為 SuperClass 的最終類,並且我們試圖從另一個類(SubClass)繼承它。
final class SuperClass {
public void display() {
System.out.println("This is a method of the superclass");
}
}編譯時錯誤
編譯時,此程式會生成如下所示的編譯錯誤:
SubClass.java:7: error: cannot inherit from final SuperClass
public class SubClass extends SuperClass{
^
1 error抽象類和最終類
如果宣告一個類為抽象類,則要使用它必須擴充套件它;如果宣告一個類為最終類,則不能擴充套件它。由於兩者相互矛盾,因此不能將一個類同時宣告為抽象類和最終類。如果這樣做,將生成編譯時錯誤。
示例
public final abstract class Example {
public void sample() {
}
}編譯時錯誤
Example.java:1: error: illegal combination of modifiers: abstract and final
public final abstract class Example {
^
1 error
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP