Hallo, ich möchte einen Zoo mit Tieren simulieren (zunächst ohne Grafik). Dazu erstelle ich eine Tierliste (normale einfachverkettete Liste) und fülle diese mit Tieren aus der Klasse Tier, wo Attribute x und y für die Positionen bereitgestellt werden. Nun will ich eine Klasse "Affe" erstellen die von Tier erbt. In der main-Methode sieht das folgendermaßen aus:
Fehler:
Exception in thread "main" java.lang.ClassCastException: klassen.Tier cannot be cast to klassen.Affe
at programme.ZooDemo.main(ZooDemo.java:11)
Hier die Klasse TierListe:
Hier die Klasse Tier:
Und hier die Klasse Affe:
Warum funktioniert das Casting nicht?? ???:L
Java:
package programme;
import klassen.Affe;
import klassen.TierListe;
public class ZooDemo {
public static void main(String[] args) {
TierListe t = new TierListe();
t.add(10, 10);
Affe a = (Affe) t.getKopf();
System.out.println("X: " + a.getX());
System.out.println("Y: " + a.getY());
}
}
Fehler:
Exception in thread "main" java.lang.ClassCastException: klassen.Tier cannot be cast to klassen.Affe
at programme.ZooDemo.main(ZooDemo.java:11)
Hier die Klasse TierListe:
Java:
package klassen;
public class TierListe {
private Tier kopf;
private TierListe next;
public TierListe getNext() {
return next;
}
public Tier getKopf() {
return kopf;
}
public void del(Tier x) {
if (kopf != null) {
if (kopf == x) {
kopf = next.getKopf();
next = next.getNext();
} else
next.del(x);
}
}
public void add(int x, int y) {
if (kopf == null) {
kopf = new Tier(x, y);
next = new TierListe();
} else
next.add(x, y);
}
}
Hier die Klasse Tier:
Java:
package klassen;
public class Tier {
private int x;
private int y;
public Tier(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
public void bewegen(int x, int y) {
this.x = x;
this.y = y;
}
}
Und hier die Klasse Affe:
Java:
package klassen;
public class Affe extends Tier {
public Affe(int x, int y) {
super(x, y);
}
}
Warum funktioniert das Casting nicht?? ???:L