Ich schreibe ein Programm, das auf der Demonstration der Vererbung basiert. Ich versuche, eine Ausnahme zu schreiben, so dass der einzige Parameter, der in die Meat-Klasse übergeben werden kann, die mit der Klasse Wolf verknüpft ist. Im Wesentlichen versuche ich zuzulassen, dass der einzige Parameter, der in die Essmethode übernommen werden kann, eine Nahrungsmittelvariable ist, die Fleisch genannt wird. Hier ist der Code:Wie wird ein Argument übergeben, das einen Parameter des Typs Essen benötigt?
Tier
abstract public class Animal
{
String name;
int age;
String noise;
abstract public void makeNoise();
public String getName() {
return name;
}
public void setName(String newName) {
name = newName;
}
abstract public Food eat(Food x) throws Exception;
}
Lebensmittel
public class Food {
//field that stores the name of the food
public Food name;
//constructor that takes the name of the food as an argument
public Food(Food name){
this.name = name;
}
public Food getName() {
return name;
}
}
Fleisch
public class Meat extends Food
{
public Meat(Food name)
{
super(name);
}
public Food getName()
{
return super.getName();
}
}
Carnivore
public class Wolf extends Carnivore
{
Wolf()
{
name = "Alex";
age = 4;
}
public void makeNoise()
{
noise = "Woof!";
}
public String getNoise()
{
return noise;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public Food eat(Food x) throws Exception
{
if (x instanceof Meat) {
return x;
} else {
throw new Exception("Carnivores only eat meat!");
}
}
}
Wolf
public class Wolf extends Carnivore
{
Wolf()
{
name = "Alex";
age = 4;
}
public void makeNoise()
{
noise = "Woof!";
}
public String getNoise()
{
return noise;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public Food eat(Food x) throws Exception
{
if (x instanceof Meat) {
return x;
} else {
throw new Exception("Carnivores only eat meat!");
}
}
}
Haupt
public class Main {
public static void main(String[] args)
{
Wolf wolfExample = new Wolf();
System.out.println("************Wolf\"************");
System.out.println("Name = " + wolfExample.getName());
System.out.println("Age = " + wolfExample.getAge());
wolfExample.makeNoise();
System.out.println("Noise = " + wolfExample.getNoise());
Meat meatExample = new Meat(//Food argument goes here?);
System.out.println("************Wolf eating habits************");
System.out.println("Wolves eat " + wolfExample.eat(meatExample.getName()));
}
}
Das Problem, das ich habe ist, dass ich nicht in irgendetwas als Nahrungs Argument innerhalb des neuen passieren kann Fleischobjekt, das ich innerhalb meiner Hauptmethode erstelle. Und ich mm bekomme den Fehler einer nicht unterstützten Ausnahme, wenn ich versuche, aufzurufen, was ich denke, weil eine Food-Variable nicht übergeben worden ist. Das gewünschte Ergebnis ist, dass eine Food-Variable wie Pflanzen übergeben wird, die eine Ausnahmebedingung auslöst . Irgendeine Hilfe, wie man das löst, wird geschätzt, danke.
Sie sollten Ihren verwirrten Einzug beheben. – khelwood
übergeben Sie einfach meatExample statt meatExample.getName(). –
'Meat meatExample = new Meat (// Food argument goes here?)' Braucht noch ein Food-Argument, in dem ich noch unsicher bin. – James