Hi , die Überschrift der Frage ist vielleicht nicht so gut gewählt!
Ich hab ein Programm wo CD/DVD erben von Medium sind Nun soll ich per super Aufruf (ausgeführt bei CD) folgendes ausgeben
CD: Künstler : Titel Länge Kommentar Anzahl Titel
Nun wäre das natürlich kein Problem wenn die Variablennamen gleich sind , dann würd Ich einfach "super.ausgeben" machen & im Medium dann die Variablen mit einem "this" bestücken in der "ausgeben" Methode , aber ich glaube das ist nicht der Sinn der Übung.
Gibt es eine andere Möglichkeit ?
Ich hatte das schon für DVD gemacht mit dem "this.titel" daher ist ein this schon bei der Medium Methode vorhanden!
Aufgabenstellung
9.7 Die Notwendigkeit, in der Methode ausgeben den super-Aufruf durchführen zu müssen, schränkt uns etwas bei der Formatierung der Ausgabe ein, denn wir sind abhängig davon, wie die Superklasse ihre Daten formatiert. Nehmen Sie die notwendigen Änderungen an der Klasse Medium und an der Methode ausgeben in CD vor, sodass die Ausgabe unten produziert wird. Alle Änderungen an der Klasse Medium sollten nur für ihre Subklassen sichtbar sein. Hinweis: Hier können Datenfelder helfen, die protected definiert sind. CD: Die Toten Hosen: Reich und Sexy 16 Titel, 74 Minuten Irgendein Kommentar über das Album
CD
/** * Objekte dieser Klasse repräsentieren CDs. * Sie speichern Informationen über eine CD, die * wieder abgefragt werden können. * * @author Michael Kölling und David J. Barnes * @version 2008.03.30 */ public class CD extends Medium { private String kuenstler; private int titelanzahl;
/** * Initialisiere die CD. * @param derTitel der Titel der CD. * @param derKuenstler der Kuenstler dieser CD. * @param stuecke die Anzahl der Stuecke auf der CD. * @param laenge die Spielzeit der CD */ public CD(String derTitel, String derKuenstler, int stuecke, int laenge) { super(derTitel, laenge); kuenstler = derKuenstler; titelanzahl = stuecke; }
/** * @return den Künstler dieser CD. */ public String gibKuenstler() { return kuenstler; }
/** * Aufgabe 9.1, ausgabe des Künstlers */ public void ausgeben() { System.out.print("Künstler: " + kuenstler); //super.ausgeben(); 9.2 }
/** * @return die Anzahl der Titel auf dieser CD. */ public int gibTitelanzahl() { return titelanzahl; } }
Medium
/** * Objekte dieser Klasse repräsentieren Medien in einer * Multimedia-Datenbank. Sie speichern Informationen über ein * Medium, die wieder abgefragt werden können. * Diese Klasse dient als Oberklasse für speziellere Medientypen. * * @author Michael Kölling und David J. Barnes * @version 2008.03.30 */ public class Medium { private String titel; private int spielzeit; private boolean habIch; private String kommentar;
/** * Initialisiere die Datenfelder dieses Mediums. * @param derTitel der Titel dieses Mediums. * @param laenge die Spielzeit dieses Mediums. */ public Medium(String derTitel, int laenge) { titel = derTitel; spielzeit = laenge; habIch = false; kommentar = ""; }
/** * Trage einen Kommentar für dieses Medium ein. * @param kommentar der einzutragende Kommentar. */ public void setzeKommentar(String kommentar) { this.kommentar = kommentar; }
/** * @return den Kommentar für dieses Medium. */ public String gibKommentar() { return kommentar; }
/** * Setze, ob wir dieses Medium in unserer Sammlung haben. * @param vorhanden true, wenn wir das Medium haben, false sonst. */ public void setzeVorhanden(boolean vorhanden) { habIch = vorhanden; }
/** * @return true, wenn wir dieses Medium in unserer Sammlung haben, * false sonst. */ public boolean gibVorhanden() { return habIch; }
/** * Gib Details über dieses Medium auf der Konsole aus. * Aufgabe 9.1, nur Ttel ausgeben lasseb */ public void ausgeben() { System.out.print("Titel: " + this.titel); if(habIch) { System.out.println("*"); } else { System.out.println(); } //System.out.println(" " + kommentar); } }
Dein Code ist doch richtig und das super in der ausgeben-Methode doch auch.