Zweite Ausgabe von vererbten Klassen

klatscher45

Mitglied
Hallo liebes Java-Forum,

ich habe ein Problem und zwar habe ich die Aufgabe ein Diagramm umzusetzen, dass ineinander Werte vererbt.

1639591101987.png


Dieses Diagramm wurde mit folgenen Code soweit umgesetzt:

[CODE lang="java" title="Vererbung"]public class Publication
{
public String author;
public String title;
public int year;
public float pricePerUnit;


Publication(String author, String title, int year, float pricePerUnit){

this.author = author;
this.title = title;
this.year = year;
this.pricePerUnit = pricePerUnit;

}
// Methode print

void print(){

Publication pub1 = new Publication("Max Muster","Titel" , 1980, 15.99f);


System.out.println("Autor: " + pub1.author);
System.out.println("Titel: " + pub1.title);
System.out.println("Erscheinungsjahr: " + pub1.year);
System.out.println("Preis: " + pub1.pricePerUnit);
}
void print2(){

Publication pub2 = new Publication("Abdul Alhazred", "Kitab al-Azif", 737, -1.0f);

System.out.println("Autor: " + pub2.author);
System.out.println("Titel: " + pub2.title);
System.out.println("Erscheinungsjahr: " + pub2.year);
System.out.println("Preis: " + pub2.pricePerUnit);
}
}

public class Article extends Publication {

public String journal = "ABC-Verlag";
public String journal2 = "arxiv.org";

Article(String author, String title, int year, float pricePerUnit,String journal) {

super(author, title, year, pricePerUnit);
this.journal = journal;

}

void print(){

Article article1 = new Article("Max Muster","Titel" , 1980, 13.22f,"ABC-Journal");

System.out.println("Artikel: ");
System.out.println("Autor: " + article1.author);
System.out.println("Titel: " + article1.title);
System.out.println("Erscheinungsjahr: " + article1.year);
System.out.println("Preis: " + article1.pricePerUnit);
System.out.println("Zeitschrift: " + article1.journal);

}
void print2(){

Article article2 = new Article("Eugene Vasiliev, Monica Valluri", " A new implementation of the Schwarzschild method for constructing observationally-driven dynamical models of galaxies of all morphological types ", 2019, 0.0f, "arxiv.org");

System.out.println("Artikel: ");
System.out.println("Autor: " + article2.author);
System.out.println("Titel: " + article2.title);
System.out.println("Erscheinungsjahr: " + article2.year);
System.out.println("Preis: " + article2.pricePerUnit);
System.out.println("Zeitschrift: " + article2.journal2);

}
//print
}


public class Book extends Publication {

public String publisher = "ABC-Verlag";
public String publisher2 = "Nikol";

Book(String author, String title, int year, float pricePerUnit,String publisher) {

super(author, title, year, pricePerUnit);
this.publisher = publisher;

}
//print

void print(){

Book buch1 = new Book("Max Muster","Titel" , 1980, 15.99f,"ABC-Verlag");

System.out.println("Buch: ");
System.out.println("Autor: " + buch1.author);
System.out.println("Titel: " + buch1.title);
System.out.println("Erscheinungsjahr: " + buch1.year);
System.out.println("Preis: " + buch1.pricePerUnit);
System.out.println("Verlag: " + buch1.publisher);

}

void print2(){

Book buch2 = new Book("Charles Darwin", "Über die Entstehung der Arten", 1859, 9.95f, "Nikol");

System.out.println("Buch: ");
System.out.println("Autor: " + buch2.author);
System.out.println("Titel: " + buch2.title);
System.out.println("Erscheinungsjahr: " + buch2.year);
System.out.println("Preis: " + buch2.pricePerUnit);
System.out.println("Verlag: " + buch2.publisher2);

}
}
[/CODE]

Nun soll laut dem Tester (Feedbackssystem innerhalb der Prüfungsumgebung) eine zweite Reihe an Werten ausgegben werden. Die zweite Reihe habe ich versucht mit den Codestücken zu schreiben, die im oben genannten Code jeweils mit "buch2.xxx", "article2.xxx" sowie mit "pub2.xxx" deklariert sind. Allerdings wird nur die Ausgabe angezeigt, die als "buch1.xxx", "article1.xxx" sowie mit "pub1.xxx" deklariert ist.

Das konkrete Problem wäre also, dass die zweite Eingabe quasi als die erste Eingabe erkannt wird, bzw. gar nicht erst stattfindet. Die Erste Ausgabe (buch1.xxx etc.) funktioniert tadellos. Ich komme jedoch nicht auf die Lösung.

Ich bedanke mich für jede Hilfe im Vorraus! :)
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Die Methode print() ist ja eine Methode der instanz, d.h. Du rufst diese Methode ja auf einer Instanz von der jeweiligen Klasse auf.
Wieso erzeugst Du eine neue Instanz in der Methode print bzw. print2 statt die Instanz zu nutzen, auf der die Methode aufgerufen wurde (this)?

Und dann dürfte Sinn der Aufgabe sein, dass die überschriebene Methode print erst einmal die Methoder der übergeordneten Klasse aufruft um dann die Ausgabe zu erweitern.
 

klatscher45

Mitglied
Die Methode print() ist ja eine Methode der instanz, d.h. Du rufst diese Methode ja auf einer Instanz von der jeweiligen Klasse auf.
Wieso erzeugst Du eine neue Instanz in der Methode print bzw. print2 statt die Instanz zu nutzen, auf der die Methode aufgerufen wurde (this)?

Und dann dürfte Sinn der Aufgabe sein, dass die überschriebene Methode print erst einmal die Methoder der übergeordneten Klasse aufruft um dann die Ausgabe zu erweitern.
Ich habe jetzt einige Abwandlungen ausprobiert, doch leider muss ich sagen, dass ich deinen Punkt wohl nicht ganz verstehe. Ich habe herrausgefunden, dass nur das erste Set an Werten abgespeichert werden kann, da ich da verändern kann was ich will: Es kommt quasi immer nur das erste gespeicherte Set raus. Könnte ich das lösen, indem ich alle zunächst leeren Variablen in denen etwas abgespeichert wird dupliziere?

Zudem kann ich nicht einfach alle Instanzen (ich hoffe mal ich liege richtig wenn damit "Publication buchx = new buch(abzuspeichernde Werte) gemeint ist) in eine einzige print(); Methode packen, dann habe ich zwar alle richtigen Werte, der Tester verlangt allerdings eine eigene Methode pro Instanz.
 
K

kneitzel

Gast
Das Problem, das ich im Augenblick bei Dir sehe ist, dass Du in der print() Methode eine neue Instanz erzeugst. Aber das ist so in der Regel falsch, denn wenn Du print auf einer Instanz aufrufst, dann soll diese Instanz ja ausgegeben werden. Also vom Code her sieht das dann so aus:

Java:
public class Test {
    private int value;
    
    public Test(int value) {
        this.value = value;
    }
    
    public void print() {
        System.out.println("value := " + value);
    }
}

In print wird also der Inhalt der Instanz, auf der es aufgerufen wurde, ausgegeben. value ist also kurz für this.value.

Nutzen tust Du das, in dem Du z.B. in der main Methode aufrufst:
Java:
Test test = new Test(5);
test.print();

Das dürfte erst einmal das Kernproblem sein. Wenn Du das begriffen hast, dann kannst Du Dir anschauen, wie man bei einer überschriebenen Methode die Methode der übergeordneten Klasse aufrufen kann (mittels super).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
L Anpassung der Spaltenbreite auch auf eine zweite Tabelle anwenden Java Basics - Anfänger-Themen 8
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
L Jede zweite Ziffer entfernen (rekursiv) Java Basics - Anfänger-Themen 6
N ArrayList: Das zweite Element wird zur Liste nicht eingefügt nach dem zweiten request. Java Basics - Anfänger-Themen 3
A Akzeptiert das zweite replaceAll nicht Java Basics - Anfänger-Themen 20
H Wie kann ich jedes zweite Array Wert ausgeben lassen?? Java Basics - Anfänger-Themen 6
A Mit javac zweite Datei compilieren ohne Erste erneut zu compilieren? Java Basics - Anfänger-Themen 7
A OOP Arraybefüllung mit for-Schleifen Problem: Umsprung in die zweite Zeile Java Basics - Anfänger-Themen 11
H RandomAccesFile zweite Zeile schreiben Java Basics - Anfänger-Themen 4
R Image laden die Zweite Java Basics - Anfänger-Themen 4
R Erste und zweite Stelle einer Eingabe auslesen Java Basics - Anfänger-Themen 2
F Mehrdimensionales Array zweite Diemnsion später Konstruieren? Wie Java Basics - Anfänger-Themen 2
U zweite Frage: return, wichtig Java Basics - Anfänger-Themen 8
S Nachricht von Console auf Screen wiedergeben die zweite:-) Java Basics - Anfänger-Themen 7
F Zweite Graphics-Methode wird nicht ausgeführt Java Basics - Anfänger-Themen 4
U Sonderzeichen die zweite Java Basics - Anfänger-Themen 16
S Zahlenraten die zweite Java Basics - Anfänger-Themen 3
K Eclipse - zweite Konsole? Java Basics - Anfänger-Themen 2
ven000m Rauten "Stern" zeichnen, hälfte habe ich zweite? Java Basics - Anfänger-Themen 2
K Neuronales Netz in Java ... die zweite Java Basics - Anfänger-Themen 3
K Wörter zählen auf Internetseiten... die zweite Java Basics - Anfänger-Themen 4
S Klappe die Zweite für Heute Java Basics - Anfänger-Themen 2
A Fehler beim Lesen von Objekten aus Datei (die zweite) Java Basics - Anfänger-Themen 2
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
M Ausgabe beim Overloading Java Basics - Anfänger-Themen 3
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
B Binärzahlen auflisten, falsche Ausgabe? Java Basics - Anfänger-Themen 1
M Java Ausgabe der höchsten Zahl Java Basics - Anfänger-Themen 14
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
W Streams in Java und was bedeutet meine Konsolen-Ausgabe? Java Basics - Anfänger-Themen 4
B Automatisierte Ausgabe (Schleife, If-Abfrage?) Java Basics - Anfänger-Themen 24
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
B Deadlock verstehen der Ausgabe! Java Basics - Anfänger-Themen 12
Lion.King Ausgabe mit Eigenschaften Java Basics - Anfänger-Themen 4
D Java Pattern mit X Ausgabe Stern Java Basics - Anfänger-Themen 4
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
Xaver code Tastatur ausgabe Java Basics - Anfänger-Themen 4
R Anfänger: Ausgabe kommt minus raus? Java Basics - Anfänger-Themen 6
K Leerzeile in Konsolen-Ausgabe Java Basics - Anfänger-Themen 4
Q return Ausgabe Java Basics - Anfänger-Themen 4
C Java Arrays - Ausgabe in Methode Java Basics - Anfänger-Themen 12
D Best Practice Ausgabe über direkte Ausgabe oder try-catch? Java Basics - Anfänger-Themen 13
S Ausgabe des Variablenwerts Java Basics - Anfänger-Themen 10
I Ausgabe nicht nur senkrecht sondern auch waagerecht. Java Basics - Anfänger-Themen 2
paulen1 Methoden Unerwünschte Ausgabe bei System.out.print in For-Schleife Java Basics - Anfänger-Themen 8
C Ausgabe boolean return ((n==9)||(n==0)); Java Basics - Anfänger-Themen 13
F Double Ausgabe nicht wissenschaftlich Java Basics - Anfänger-Themen 16
danieldemetry Java - Graph Komponenten - Ausgabe Java Basics - Anfänger-Themen 0
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B Ausgabe in TextArea funktioniert nicht Java Basics - Anfänger-Themen 2
D BigDecimal Ausgabe sehr lang. Java Basics - Anfänger-Themen 2
J String Ausgabe Java Basics - Anfänger-Themen 2
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
KogoroMori21 Array-Ausgabe Java Basics - Anfänger-Themen 6
JaVaN0oB Wörterraten - Falsche Ausgabe, String/Chars vergleichen Java Basics - Anfänger-Themen 2
E Ausgabe überschreiben Java Basics - Anfänger-Themen 15
D Ausgabe von Array Java Basics - Anfänger-Themen 2
U Ausgabe Java Basics - Anfänger-Themen 4
J Buchstabenhäufigkeit mit Array und Ausgabe des häufigsten Buchstaben Java Basics - Anfänger-Themen 25
V Multiplikationstafel - Ausgabe Java Basics - Anfänger-Themen 4
L Warum ist die Ausgabe anders als das was im Bezeichner steht? Java Basics - Anfänger-Themen 4
M In gleicher zeile hinter ausgabe noch etwas ausgeben Java Basics - Anfänger-Themen 1
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
H Falsche Ausgabe Java Basics - Anfänger-Themen 2
P Klassenübergreifende Ausgabe mittels "getter" nicht möglich Java Basics - Anfänger-Themen 21
R Call-by-Value, Call-by-Reference, Call-by-Name Ausgabe Java Basics - Anfänger-Themen 1
JavaClap "Bruchrechner" liefert Fehler/keine Ausgabe bei Addition und Subtraktion Java Basics - Anfänger-Themen 0
D Warum erfolgt folgende Ausgabe und warum? Java Basics - Anfänger-Themen 4
C Ausgabe in der Konsole Java Basics - Anfänger-Themen 11
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
C Konvertierung des int typs in den double typ für die Ausgabe mit Nachkommastellen Java Basics - Anfänger-Themen 4
A Ausgabe mit boolean Java Basics - Anfänger-Themen 3
K Probleme bei der Ausgabe - komme nicht weiter :/ Java Basics - Anfänger-Themen 15
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
Y Methode + Parameters + Ein und Ausgabe Java Basics - Anfänger-Themen 1
K Methodenaufruf /-ausgabe Java Basics - Anfänger-Themen 5
A Wiederholte Ausgabe vermeiden Java Basics - Anfänger-Themen 16
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
M Wie analysiert JSON eine toString-Ausgabe ? Java Basics - Anfänger-Themen 1
T Vererbung Verschiedene Fahrzeugtypen mit unterschiedlicher Ausgabe Java Basics - Anfänger-Themen 17
T Ausgabe einer for Schleife Java Basics - Anfänger-Themen 2
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
M Ausgabe einer Liste welche mehrere Stacks enthält Java Basics - Anfänger-Themen 3
T Text-Ausgabe für Textadventure - Organisation Java Basics - Anfänger-Themen 5
G Unterklassen (Klasse für Ausgabe) Java Basics - Anfänger-Themen 4
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
J Methode zur Ausgabe eines Dreiecks aus Sternen schreiben? Java Basics - Anfänger-Themen 2
ZH1896ZH Wieso diese Ausgabe?? Java Basics - Anfänger-Themen 10
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
B Keine Ausgabe .. Woran liegt das? Ich komme nicht weiter Java Basics - Anfänger-Themen 14
K Rechtsbündige Ausgabe von Zahlen Java Basics - Anfänger-Themen 6
V Erste Schritte for-Schleife; Ausgabe soll alle 5 Sekunden erfolgen. Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben