Java - Fehler : der return-Typ ist nicht kompatibel
Ich bin java zu lernen. Ich habe versucht, den code auszuführen, wo bekam ich diese Fehlermeldung: return type is incompatible
.
Teil des Codes, wo es zeigte mir eine Fehlermeldung.
class A {
public void eat() { }
}
class B extends A {
public boolean eat() { }
}
Warum ist es passiert?
InformationsquelleAutor mike | 2011-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, weil wir nicht zwei Methoden in Klassen, die den gleichen Namen, aber unterschiedlichen Rückgabetypen.
Den sub-Klasse kann nicht deklarieren Sie eine Methode mit dem selben Namen einer bereits bestehenden Methode in der super-Klasse mit einem anderen return-Typ.
Jedoch die Unterklasse deklarieren Sie eine Methode mit der gleichen Signatur wie in der Superklasse.
Wir nennen dies "Zwingend".
Müssen Sie dieses haben,
ODER
Eine gute Praxis ist die Markierung überschrieben Methoden durch Annotationen
@Override
:InformationsquelleAutor sgokhales
wenn
B
erstrecktA
dann können Sie überschreiben von Methoden (wieeat
), aber Sie können nicht ändern, Ihre Unterschriften. So, IhrB
Klasse mussInformationsquelleAutor MarcoS
B extends A
sollte so interpretiert werden, B ist ein A.Wenn Eine Methode nichts zurückgibt, B sollte das gleiche tun.
InformationsquelleAutor Vincent Cantin
Wenn eine Methode in der Unterklasse hat die gleichen Namen und die Argumente (Ihre Art, Anzahl und Reihenfolge) als die Methode in der Superklasse die Methode in Unterklasse überschreibt die eine in der Oberklasse.
Nun für das überschreiben zugelassen zu werden, der return-Typ der Methode in der Unterklasse entsprechen muss, die der Methode in der Superklasse. Dies ist nur möglich, wenn der Rückgabetyp der Methode in der Unterklasse ist kovariante mit, dass die Methode in der Superklasse.
Da
boolean </: void
(Lesen:boolean
ist kein Subtyp vonvoid
), der compiler wirft die "return-Typ unverträglich" - Fehler.InformationsquelleAutor missingfaktor
Dies ist weder überladen, noch überschreiben. Wir können nicht die überlastung der Rückgabetyp und die wir nicht außer Kraft setzen kann mit verschiedenen verschiedenen Rückgabetypen ( es sei denn, Sie sind covariant returns wef Java 1.5 ).
InformationsquelleAutor Vivek Vermani