String toString methode nicht vererbt ...

TChill

Mitglied
Hallo Community,
ich hab jetzt ne aufgabe von unserem prof ausprogrammiert und am schluss wenn ich das ganze ausgeben will wird mir nur die String methode von den Kindsklassen ausgegebn.
Das ist meine Superklasse
Java:
public class BibObject {
	int id;
	String Titel;

	public BibObject(String ObjektTitel, int ObjektId) {
		this.id = ObjektId;
		this.Titel = ObjektTitel;
	}

	public String toString() {
		return "Titel=" + Titel + "ID= " + id;
	}
und hier ist z.b. meine klasse für einen Film
Java:
public class Filme extends BibObject {
	int Dauer;

	public Filme(String Titel, int id, int Dauer) {
		super(Titel, id);
		this.Dauer = Dauer;
	}

	public String toString() {
		return "Dauer = " + Dauer;
	}
}
und wenn ich das ganze dann ausgeben will uns zwar mit ner arrayliste und zwar so
Java:
public class Bibliothekliste {

	public static void main(String[] args) {
	Bücher buch = new Bücher("was", 23, 999);
	Bücher buch1 = new Bücher("wieso nicht", 53, 241);
	Filme film = new Filme("jlsg", 25, 351);
	Hoerbücher Hoerbuch = new Hoerbücher(15, "waaaad", 536);
	Filme film2 = new Filme("Noooo", 56, 521);
	ArrayList<BibObject> Biblitothekliste = new ArrayList<BibObject>();
	Biblitothekliste.add(Hoerbuch);
	Biblitothekliste.add(film2);
	Biblitothekliste.add(film);
	Biblitothekliste.add(buch);
	Biblitothekliste.add(buch1);
	Biblitothekliste.add(buch);
	for (int i = 0 ; i<=Biblitothekliste.size(); i++){
		System.out.println(Biblitothekliste.get(i));
	}
	}
wird mir das ganze in der Konsole so ausgegeben :

Buecher [Seitenanzahl=25]
Hoerbuecher [Dauer=96]
Filme [Dauer=110]
Filme [Dauer=10]
Filme [Dauer=110]


kann mir einer sagen was ich falsch gemacht hab vielen dank !
 
Hi,
Wenn du den String von toString() der Oberklasse auch ausgeben möchtest:
Java:
public class Filme extends BibObject {
...
    @Override
    public String toString() {
    	return super.toString() + " Dauer = " + Dauer;
    }
...
}
 
Ja genau das war mein Ziel 🙂
also vielen dank für eure Hilfe, jetzt im nachhinein eigentlich selbstverständlich xD
dankee euch !
 
Wie Knilch schon schön in seinem Codeausschnitt gezeigt hat macht es Sinn durch die Notation von
Code:
@Override
anzugeben das hier eine Methode überschrieben wird, nicht nur weil es übersichtlicher ist , sondern auch weil ein zufälliges überladen dann nicht mehr passiert 😉
 

Neue Themen


Zurück
Oben