Hey Leute! Ich habe diese Oberklasse:
Sowie diese beiden Unterklassen:
Und dann noch verschiedene Unterklassen davon wie z.B :
Ebenso habe ich dieses Interface :
Meine Main-Methode sieht so aus:
Ich möchte nun alle Tiere aus der Liste der Katzen ausgeben und bekomme jeweils nur z.B. "tiergen.Amurtiger@27973e9b". Obwohl ich doch die toString() - Methode verwendet habe. Ich hoffe mir kann jemand weiterhelfen!
Code:
package tiergen;
public abstract class Zootier {
protected static int id = 1056;
private int nummer;
protected String familie;
protected String art;
protected String futter;
public Zootier() {
nummer = id++;
}
}
Sowie diese beiden Unterklassen:
Code:
public abstract class Feloidea extends Zootier {
public Feloidea() {
super();
familie = "Feloidea";
}
}
public abstract class Canoidea extends Zootier {
public Canoidea() {
super();
familie = "Canoidea";
}
}
Und dann noch verschiedene Unterklassen davon wie z.B :
Code:
public class MaineCoon extends Feloidea implements HaustierIF{
protected String name;
protected String laut = "Miau";
public MaineCoon() {
super();
art="Maine-Coon";
futter="Katzenfutter";
}
@Override
public String getName() {
return name;
}
@Override
public void setName(String name) {
this.name = name;
}
@Override
public void streicheln() {
System.out.println(laut);
}
}
}
Ebenso habe ich dieses Interface :
Code:
public interface HaustierIF {
public String getName();
public void setName(String name);
public void streicheln();
}
Meine Main-Methode sieht so aus:
Code:
package tiergen;
import java.util.Random;
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import java.io.*;
public class Main
{
public static void main(String[] args) throws Exception
{
List<Feloidea>katzen=new ArrayList<Feloidea>();
List<Canoidea>hunde=new ArrayList<Canoidea>();
List<Feloidea>erdmaennchen = new ArrayList<Feloidea>();
List<Canoidea>baer = new ArrayList<Canoidea>();
List<HaustierIF>streichelzoo = new ArrayList<HaustierIF>();
String [] knamen = {"Max" , "Sally" , "Fred" , "Mopsi" , "Bernd" , "Flecki" };
//Pfad anpassen!
File f = new File(".\\Daten\\Tiere.txt");
OutputStream ostream = new FileOutputStream(f);
PrintWriter writer = new PrintWriter(ostream);
Random zufall = new Random();
Scanner reader = new Scanner(System.in);
System.out.print("Anzahl > ");
int anzahl = reader.nextInt();
for(int i = 0; i < anzahl; i++){
switch(zufall.nextInt(8)){
case 0:
writer.println("Amurtiger");
katzen.add(new Amurtiger());
break;
case 1:
writer.println("Maine-Coon");
katzen.add(new MaineCoon());
break;
case 2:
writer.println("Beagle");
hunde.add(new Beagle());
break;
case 3:
writer.println("Erdmaennchen");
erdmaennchen.add(new Erdmaennchen());
break;
case 4:
writer.println("Wolf");
hunde.add(new Wolf());
break;
case 5:
writer.println("Tuerkisch Van");
katzen.add(new TuerkischVan());
break;
case 6:
writer.println("Bernhardiner");
hunde.add(new Bernhardiner());
break;
case 7:
writer.println("Kodiakbaer");
baer.add(new Koadiakbaer());
break;
default:
}
}
reader.close();
writer.close();
System.out.println("Alle Katzen: ");
System.out.println(katzen.toString());
System.out.println("Alle Hunde: ");
System.out.println(hunde.toString());
System.out.println("Alle Baeren: ");
System.out.println(baer.toString());
System.out.println("Alle Erdmaennchen: ");
System.out.println(erdmaennchen.toString());
for(Feloidea k: katzen) {
if(k instanceof HaustierIF) {
((HaustierIF)k).setName(knamen[zufall.nextInt(knamen.length)]);
streichelzoo.add((HaustierIF)k);
}
}
for(Canoidea h: hunde) {
if(h instanceof HaustierIF) {
((HaustierIF) h).setName(knamen[zufall.nextInt(knamen.length)]);
streichelzoo.add((HaustierIF)h);
}
}
System.out.println("Alle Tiere aus dem Streichelzoo: ");
for(HaustierIF s: streichelzoo) {
System.out.println(s);
}
}
}
Ich möchte nun alle Tiere aus der Liste der Katzen ausgeben und bekomme jeweils nur z.B. "tiergen.Amurtiger@27973e9b". Obwohl ich doch die toString() - Methode verwendet habe. Ich hoffe mir kann jemand weiterhelfen!