Class is not abstract and does not override abstract method in Java
-
Warum tritt in Java der Fehler
Class is not abstract and does not override abstract method
auf? -
Lösung 1: Überschreiben Sie die
canSpeak()
-Methode -
Lösung 2: Machen
Baby
abstrakt -
Lösung 3: Machen Sie
Human
zu einer Klasse und erweitern Sie sie in derBaby
-Klasse
In diesem Artikel finden Sie Lösungen für den Fehler Class is not abstract and does not override abstract method
, der auftritt, wenn wir das Konzept der Abstraktion in Java verwenden.
Warum tritt in Java der Fehler Class is not abstract and does not override abstract method
auf?
Im folgenden Code haben wir zwei Klassen und eine Schnittstelle. Die Klasse JavaExample
hat eine main()
-Methode ohne Körperteil. Wir erstellen eine Human
-Schnittstelle mit einer abstrakten
Methode canSpeak()
mit boolean
als Rückgabetyp. Wir geben keinen Körper für canSpeak()
an, weil eine abstract
-Methode keinen Körper hat.
In der zweiten Klasse, Baby
, erben wir die Schnittstelle Human
mit dem Schlüsselwort implements
. Wenn wir eine IDE verwenden, tritt ein Fehler auf, und wenn wir den Code ausführen, tritt der Fehler auf, wie in der Ausgabe gezeigt.
Wenn wir uns den Fehler Baby is not abstract and does not override abstract method canSpeak() in Human
ansehen, können wir verstehen, warum er aufgetreten ist. Es besagt, dass die Klasse Baby
nicht abstrakt ist und die Methode canSpeak()
der Schnittstelle Human
nicht überschreibt.
Dieser Fehler tritt auf, weil wir die abstrakten Methoden überschreiben müssen, um den Hauptteil zu definieren, wenn wir eine Klassenschnittstelle mit abstrakten Methoden implementieren.
public class JavaExample {
public static void main(String[] args) {}
}
class Baby implements Human {}
interface Human {
abstract boolean canSpeak();
}
Ausgabe:
java: Baby is not abstract and does not override abstract method speak() in Human
Lösung 1: Überschreiben Sie die canSpeak()
-Methode
Um den Fehler java: Baby is not abstract and does not override abstract method speak() in Human
nicht zu beheben, besteht die erste Lösung darin, die abstract
-Methode canSpeak()
in der Baby
-Klasse zu überschreiben, die die Schnittstelle Human
-Klasse implementiert.
Die Funktion canSpeak()
gibt false zurück und in der Methode main()
erzeugen wir ein Objekt der Klasse Baby
und rufen die überschriebene Funktion canSpeak()
auf. In der Ausgabe können wir sehen, dass kein Fehler vorliegt und der erwartete Wert angezeigt wird.
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();
}
Ausgabe:
Can Speak? false
Lösung 2: Machen Baby
abstrakt
Eine andere Lösung besteht darin, die Klasse Baby
zu einem abstract
zu machen. Wir haben hier den gleichen Code, aber Baby
ist eine abstrakte
Klasse. Es kann nicht initialisiert werden; Wir erstellen nur eine Instanz der Klasse Baby
in der Methode main()
.
public class JavaExample {
public static void main(String[] args) {
Baby baby;
}
}
abstract class Baby implements Human {}
interface Human {
abstract boolean canSpeak();
}
Lösung 3: Machen Sie Human
zu einer Klasse und erweitern Sie sie in der Baby
-Klasse
Die letzte Lösung ist eine andere. Anstatt ein Interface zu implementieren, können wir das Interface Human
in eine Klasse umwandeln und diese Klasse in der Klasse Baby
mit dem Schlüsselwort extends
erweitern. Wir spezifizieren den Body von canSpeak()
in der Human
-Klasse selbst, was den Fehler beseitigt.
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;
}
}
Ausgabe:
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.
LinkedInVerwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse