Mein Problem sieht vor, die folgende, den Umgang mit Vögeln:Wie kann ich diese Klassen dazu bringen, diese Eigenschaften zu erben?
- Vögel fliegen können.
- Enten fliegen aber auch schwimmen.
- Pinguine fliegen nicht.
- Pinguine tauchen tief, im Gegensatz zu Enten.
- Nur Papageien können sprechen.
Hier ist mein Code:
import java.util.*;
public class Code
{
public static void main(String[] args)
{
Bird[] birds = new Bird[3];
birds[0] = new Duck(true, false, false, false);
birds[1] = new Penguin(false, true, false, true);
birds[2] = new Parrot(true, false, true, false);
}
}
abstract class Bird
{
abstract boolean flight();
abstract boolean deepdive();
abstract boolean talk();
abstract boolean swim();
Bird (boolean flight, boolean deepdive, boolean talk, boolean swim)
{
this.flight = flight;
this.deepdive = deepdive;
this.talk = talk;
this.swim = swim;
}
}
abstract class Duck extends Bird
{
public Duck(boolean flight, boolean deepdive, boolean talk, boolean swim)
{
super(flight, deepdive, talk, swim);
}
abstract public boolean flight();
abstract public boolean deepdive();
abstract public boolean talk();
abstract public boolean swim();
}
abstract class Penguin extends Bird
{
public Penguin(boolean flight, boolean deepdive, boolean talk, boolean swim)
{
super(flight, deepdive, talk, swim);
}
abstract public boolean flight();
abstract public boolean deepdive();
abstract public boolean talk();
abstract public boolean swim();
}
abstract class Parrot extends Bird
{
public Parrot(boolean flight, boolean deepdive, boolean talk, boolean swim)
{
super(flight, deepdive, talk, swim);
}
abstract public boolean flight();
abstract public boolean deepdive();
abstract public boolean talk();
abstract public boolean swim();
}
Meine Idee war jede Aktivität als wahr oder falsch Feld zu haben, und dann von jedem Tier Ausgang zu sagen, was er kann und nicht kann, über eine Schleife. Jedoch, wenn ich versuche, es zu starten, gibt es mir: "Leere Methoden können keinen Wert zurückgeben" und "Diese Methode erfordert einen Körper statt eines Semikolons." Wie kann ich das zur Arbeit bringen?
EDIT: Ich habe einige umgesetzt, was die Leute unten zu tun, aber ich bekomme immer noch „den Typ nicht instanziiert kann ...“ und „... kann nicht aufgelöst werden oder ist kein Feld“
Wenn 'Penguin' nicht fliegt, darf sein Konstruktor nicht mit' flight == true' aufgerufen werden: Übergeben Sie 'true' einfach an den' super' Konstruktor (etc für andere Eigenschaften und andere Unterklassen). –
Das Problem hat nichts mit Vererbung zu tun; Sie versuchen einfach, einen 'Bird' von Ihrer' void main' Methode zurückzugeben. Entweder ersetzen Sie die Rückgabe durch 'return;' (kein Wert) oder ... tun * etwas anderes *, was nicht klar ist, was das wäre, da es nicht klar ist, warum Sie einen 'Bird' zurückgeben möchten. –
Ich hatte 'neuen Pinguin (falsch, wahr, falsch, wahr); "Mit der Ordnung, Flug, Deepdive, reden, schwimmen, so dachte ich, es war falsch. Außerdem, an welchen Superkonstruktor soll ich etwas weitergeben? Was ist der Superkonstruktor im Vergleich zu Nicht-Superkonstruktoren? – user311302