Java 中的 Class is not abstract and does not override abstract method 錯誤
-
為什麼 Java 中出現錯誤
Class is not abstract and does not override abstract method
-
解決方案 1:重寫
canSpeak()
方法 -
解決方案 2:使
Baby
抽象化 -
解決方案 3:將
Human
設為一個類並在Baby
類中擴充套件它
本文將為我們在 Java 中使用抽象概念時出現的錯誤 Class is not abstract and does not override abstract method
找到解決方案。
為什麼 Java 中出現錯誤 Class is not abstract and does not override abstract method
在下面的程式碼中,我們有兩個類和一個介面。JavaExample
類有一個沒有任何主體部分的 main()
方法。我們建立一個帶有 abstract
方法 canSpeak()
的 Human
介面,並以 boolean
作為返回型別。我們沒有為 canSpeak()
指定正文,因為 abstract
方法沒有正文。
在第二個類 Baby
中,我們使用 implements
關鍵字繼承 Human
介面。如果我們使用 IDE,就會出現錯誤,而當我們執行程式碼時,就會出現錯誤,如輸出所示。
如果我們檢視錯誤 Baby is not abstract and does not override abstract method canSpeak() in Human
,我們可以理解它發生的原因。它說類 Baby
不是抽象的,它沒有重寫 Human
介面的方法 canSpeak()
。
出現此錯誤是因為在使用抽象方法實現任何類介面時,我們必須重寫抽象方法來定義主體。
public class JavaExample {
public static void main(String[] args) {
}
}
class Baby implements Human {
}
interface Human {
abstract boolean canSpeak();
}
輸出:
java: Baby is not abstract and does not override abstract method speak() in Human
解決方案 1:重寫 canSpeak()
方法
要修復 Baby is not abstract and doesn't override abstract method speak() in Human
錯誤,第一個解決方案是在實現 Human
的 Baby
類中重寫 abstract
方法 canSpeak()
介面。
canSpeak()
函式返回 false 並且在 main()
方法中我們建立 Baby
類的物件並呼叫重寫函式 canSpeak()
。在輸出中,我們可以看到沒有錯誤,並且顯示了預期值。
public class JavaExample {
public static void main(String[] args) {
Baby baby = new Baby();
System.out.println("Can Speak? "+baby.canSpeak());
}
}
class Baby implements Human {
@Override
public boolean canSpeak() {
return false;
}
}
interface Human {
abstract boolean canSpeak();
}
輸出:
Can Speak? false
解決方案 2:使 Baby
抽象化
另一種解決方案是將 Baby
類設為 abstract
類。我們這裡有相同的程式碼,但 Baby
是一個 abstract
類。無法初始化;我們只在 main()
方法中建立 Baby
類的例項。
public class JavaExample {
public static void main(String[] args) {
Baby baby;
}
}
abstract class Baby implements Human {
}
interface Human {
abstract boolean canSpeak();
}
解決方案 3:將 Human
設為一個類並在 Baby
類中擴充套件它
最後一個解決方案是不同的。我們可以將介面 Human
更改為類,並使用關鍵字 extends
在 Baby
類中擴充套件該類,而不是實現介面。我們在 Human
類本身中指定 canSpeak()
的主體,這消除了錯誤。
public class JavaExample {
public static void main(String[] args) {
Baby baby = new Baby();
System.out.println("Can Speak? " + baby.canSpeak());
}
}
class Baby extends Human {
}
class Human {
boolean canSpeak() {
return false;
}
}
輸出:
Can Speak? false
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn相關文章 - Java Error
- Java 中的 reached end of the file while parsing 錯誤
- 防止 Java 中的 Orphaned Case 錯誤
- 修復 Java Scanner NextLine Skips 錯誤
- 修復 Java 中的 NoSuchElementException 錯誤
- 修復 Java 中缺少返回語句的錯誤型別