Lassen Sie uns sagen, ich habe folgende Schnittstelle:Wie gelten weitere Einschränkungen für eine Schnittstellendeklaration in Java?
interface Mammal {
void marry(Mammal m);
Mammal giveBirthTo();
}
Dies ist jedoch nicht ganz genau sagt, was ich will.
Offensichtlich kann ein Mensch weder einen Hund heiraten noch eine Katze zur Welt bringen. Wie kann ich diese Informationen in die Schnittstelle einbetten, so dass der Eingabetyp und der Ausgabetyp bei der Implementierung automatisch geändert werden können?
Sollte die Schnittstelle nicht "Mammal" heißen? Es gibt keinen Grund, einen anderen hinzuzufügen. –
@RafaelWinterhalter Nun, wie ich schon erwähnt habe, könnte man eine "Säugetier" -Schnittstelle oder abstrakte Klasse haben, die das oberste Tier in dieser bestimmten Vererbungskette abstrahiert. Die "Marriable" -Schnittstelle würde den Vertrag definieren, stattdessen eine Ihrer Spezies zu heiraten. – Mena
Sie benötigen dazu nicht die 'Marriable'-Schnittstelle. Sie können einfach einen rekursiven Typ erstellen, wie in der Antwort vorgeschlagen, die ich gerade hinzugefügt habe. –