Vererbung Vererbung Ausgabe

sgu

Mitglied
Hallo,

habe ein Problem mit eienr aktuellen Aufgabenstellung die wir fertig machen müssen.
In der Aufgabe geht es darum drei voneinander abgeleitete Klassen Basic, BasicPlusLimit und Advanced zu erstellen mit dem jeweils passenden Konstruktor, get()- und set()-Methoden und einer ausgabe()-Methode. Das Hauptprogramm soll als Array von drei Basisklassenreferenzen je ein Objekt der drei Klassen erzeugen. Die Ausgabe von Teilinformationen, die schon in einer Elternklasse vorhanden sind, soll durch Ausnutzung von deren Methode ausgabe() erfolgen.

Ausgegeben soll folgendes werden:

Inhaber: Meier1
Kartennummer: 2345 3250 1234 5432
Gültig bis: 11/2012
---------------------------------
Inhaber: Meier2
Kartennummer: 1234 3250 2345 9876
Gültig bis: 5/2013
Kreditlimit: 3000.0
---------------------------------
Inhaber: Meier3
Kartennummer: 3456 3250 4567 8912
Gültig bis: 7/2014
Kreditlimit: 5000.0
Umsätze:
245.5 1000.0 75.25
---------------------------------


Bei mir wird aber folgendes ausgegeben:

Inhaber: Meier1
Kartennummer: 2345 3250 1234 5432
Gültig bis: 11/2012
---------------------------------
Kreditlimit: 0.0
Inhaber: Meier2
Kartennummer: 1234 3250 2345 9876
Gültig bis: 5/2013
---------------------------------
Kreditlimit: 3000.0
Inhaber: Meier3
Kartennummer: 3456 3250 4567 8912
Gültig bis: 7/2014
---------------------------------
Kreditlimit: 5000.0
Umsätze: null


Wäre super wenn mir jmd. erklären könnte wo mein Fehler liegt und wie ich das ändern kann, damit ich die richtige Ausgabe bekomme.


Mein Quellcode:

Java:
class Basic 
{
	public String inhaber;
	public String kartennummer;
	public String gueltigkeit;
	
	public Basic(String name, String kid, String datum)
	{
		setInhaber(name);
		setKartennummer(kid);
		setGueltigkeit(datum);
		ausgabe();
	}

	// Get-Methoden der Klasse Basic
	
		public String getInhaber()
		{
			return inhaber;
		}
		
		public String getKartennummer()
		{
			return kartennummer;
		}
		
		public String getGueltigkeit()
		{
			return gueltigkeit;
		}


	  // Set-Methoden der Klasse Basic
		
		public void setInhaber(String name)
		{
			this.inhaber = name;
		}
		
		public void setKartennummer(String nummer)
		{
			this.kartennummer = nummer;
		}
		
		public void setGueltigkeit(String datum)
		{
			this.gueltigkeit = datum;
		}
	
	public void ausgabe()
	{
		System.out.println ("Inhaber: " +getInhaber());
		System.out.println ("Kartennummer: " +getKartennummer());
		System.out.println ("Gültigkeit: " +getGueltigkeit());
		System.out.println ("-------------------------------------");
	}

}





class BasicPlusLimit extends Basic
{
	public float kreditlimit;
	
	public BasicPlusLimit(String name, String kid, String datum, float limit)
	{
		super(name, kid, datum);		
		setKreditlimit(limit);
		super.ausgabe();
		ausgabe();
	}

	
	// Get-Methoden der Klasse BasicPlusLimit
	
	public float getKreditlimit()
	{
		return this.kreditlimit;
	}
	
	
	// Set-Methoden der Klasse BasicPlusLimit
	
	public void setKreditlimit(float k)
	{
		this.kreditlimit = k;
	}
	
	
	public void ausgabe()
	{
		System.out.println ("Kreditlimit: " +getKreditlimit());	
	}
}






class Advanced extends BasicPlusLimit
{
	public String umsaetze;
	
	public Advanced(String name, String kid, String datum, float limit, String umsatz)
	{
		super(name, kid, datum, limit);
		super.ausgabe();
		setUmsaetze(umsatz);
		ausgabe();
	}

	
	// Get-Methoden der Klasse Advanced
	
	public String getUmsaetze()
	{
		return this.umsaetze;
	}
	
	
	// Set-Methoden der Klasse Advanced
	
	public void setUmsaetze(String u)
	{
		this.umsaetze = u;
	}
	
	
	public void ausgabe()
	{
		System.out.println ("Umsätze: " +getUmsaetze());	
	}
}



class klasse {
	private static Basic[] ku;
	
	
	public static void main(String[] args) 
	{
		ku = new Basic[3];	
		
		ku[0] = new Basic("Meier1","2345 3250 1234 5432","11/2012");
		ku[1] = new BasicPlusLimit("Meier2","1234 3250 2345 9876","05/2013",3000.0f);
		ku[2] = new Advanced("Meier3","3456 3250 4567 8912","07/2013",5000.0f,"245.5 1000.0 75.25");

	}

}
 
Zuletzt bearbeitet von einem Moderator:
T

Trolllllll

Gast
Den Aufruf von
Code:
ausgabe()
würde ich nicht im Konstruktor machen, sondern aus der main funktion

Java:
public static void main(String[] args) {
        ku = new Basic[3];  
        
        ku[0] = new Basic("Meier1","2345 3250 1234 5432","11/2012");
        ku[1] = new BasicPlusLimit("Meier2","1234 3250 2345 9876","05/2013",3000.0f);
        ku[2] = new Advanced("Meier3","3456 3250 4567 8912","07/2013",5000.0f,"245.5 1000.0 75.25");
       ku[0].ausgabe();
       ku[1].ausgabe();
       ku[2].ausgabe();
 
    }
 
T

Trolllllll

Gast
und das der
Code:
---------------------------------
vor umsatz kommt, ist, da ja erst deine basic ausgabe kommt, welche diese
Code:
---------------------------------
beinhält
 
S

SlaterB

Gast
deine Ausgabe passt nicht zum Code, allein zum letzten Objekt habe ich
Code:
Umsätze: null
Inhaber: Meier3
Kartennummer: 3456 3250 4567 8912
Gültigkeit: 07/2013
-------------------------------------
Umsätze: null
Kreditlimit: 5000.0
Umsätze: 245.5 1000.0 75.25

in der Vererbung werden alle drei Konstruktoren ausgeführt, das sind insgesamt 5 ausgabe()-Aufrufe,
während super.ausgabe() die Klasse noch recht einschränkt sind die pauschalen ausgabe() unbestimmt,
überschreibt eine Unterklasse die Methode, wird für das Objekt immer diese genommen, daher 3x Umsatz-Ausgabe

du solltest dich auf einen einzigen ausgabe()-Aufruf beschränken,
in den Konstruktoren schlecht, wenn dann im untersten, aber dann sind manche Werte aus den höheren Ebenen noch nicht initialisiert, lieber gar nicht,
das kann der Aufrufer, die main-Methode machen,

um den Strich hinzubekommten teile das auf mehrere Methoden auf: eine ruft die zweite auf + schreibt den Strich danach,
die zweite Methode ist die mit der Vererbung,
in der Grundklasse die Ausgabe wie bisher, in höheren Klassen die zusätzlichen Ausgaben + DORT den super-Aufruf
 

AndiE

Top Contributor
Ganz so einfach geht das nicht. Das EVA-Prinzip ist bekannt? Die Ausgabe im Konstruktor aufzurufen ist nicht üblich, sondern in richtigen Anwendungen eher unsinnig. Jedes Objekt könnte sich selbst zeichnen, benötigt dazu aber die Ausgabefunktionen der Superklassen. Auch lassen sich nicht alle Objekte einfach als String darstellen. Da gibt es eine Anzahl Technologien.

Praktisch ruft bei dem jetzigen Code jede abgeleitete Klasse die Ausgabefunktion der Basisklasse ab, obwohl die Ausgabe bei den abgeleiteten Klassen anders aussehen soll.
 

sgu

Mitglied
Vielen Dank für eure Hilfe. Konnte das Problem jetzt lösen und meine Denkfehler beseitigen.
Habe in den Ausgabe Methoden der vererbten Klassen super.ausgabe() hinzugefügt und in der Main Klasse die ausgabe Methoden wie Trollllll es beschrieben hat aufgerufen --> ku[0].ausgabe(); ku[1].ausgabe(); ku[2].ausgabe();

Java:
class Basic 
{
    public String inhaber;
    public String kartennummer;
    public String gueltigkeit;
    
    public Basic(String name, String kid, String datum)
    {
        setInhaber(name);
        setKartennummer(kid);
        setGueltigkeit(datum);
    }
 
    // Get-Methoden der Klasse Basic
    
        public String getInhaber()
        {
            return inhaber;
        }
        
        public String getKartennummer()
        {
            return kartennummer;
        }
        
        public String getGueltigkeit()
        {
            return gueltigkeit;
        }
 
      // Set-Methoden der Klasse Basic
        
        public void setInhaber(String name)
        {
            this.inhaber = name;
        }
        
        public void setKartennummer(String nummer)
        {
            this.kartennummer = nummer;
        }
        
        public void setGueltigkeit(String datum)
        {
            this.gueltigkeit = datum;
        }
    
    public void ausgabe()
    {
        System.out.println ("Inhaber: " +getInhaber());
        System.out.println ("Kartennummer: " +getKartennummer());
        System.out.println ("Gültigkeit: " +getGueltigkeit());
        System.out.println ("-------------------------------------");
    }
 
}
 
class BasicPlusLimit extends Basic
{
    public float kreditlimit;
    
    public BasicPlusLimit(String name, String kid, String datum, float limit)
    {
        super(name, kid, datum);        
        setKreditlimit(limit);
     }
 
    
    // Get-Methoden der Klasse BasicPlusLimit
    
    public float getKreditlimit()
    {
        return this.kreditlimit;
    }
    
    
    // Set-Methoden der Klasse BasicPlusLimit
    
    public void setKreditlimit(float k)
    {
        this.kreditlimit = k;
    }
    
    
    public void ausgabe()
    {
        super.ausgabe();
        System.out.println ("Kreditlimit: " +getKreditlimit()); 
    }
}
 
class Advanced extends BasicPlusLimit
{
    public String umsaetze;
    
    public Advanced(String name, String kid, String datum, float limit, String umsatz)
    {
        super(name, kid, datum, limit);
        setUmsaetze(umsatz);
    }
 
    
    // Get-Methoden der Klasse Advanced
    
    public String getUmsaetze()
    {
        return this.umsaetze;
    }
    
    
    // Set-Methoden der Klasse Advanced
    
    public void setUmsaetze(String u)
    {
        this.umsaetze = u;
    }
    
    
    public void ausgabe()
    {
        super.ausgabe();
        System.out.println ("Umsätze: " +getUmsaetze());    
    }
}
 
class klasse {
    private static Basic[] ku;
    
    
    public static void main(String[] args) 
    {
        ku = new Basic[3];  
        
        ku[0] = new Basic("Meier1","2345 3250 1234 5432","11/2012");
        ku[1] = new BasicPlusLimit("Meier2","1234 3250 2345 9876","05/2013",3000.0f);
        ku[2] = new Advanced("Meier3","3456 3250 4567 8912","07/2013",5000.0f,"245.5 1000.0 75.25");
 
        ku[0].ausgabe();
        ku[1].ausgabe();
        ku[2].ausgabe();


    }
 
}
 
S

SlaterB

Gast
bleibt noch dass die Trennlinie falsch gesetzt ist, wie gesagt diese besser erst nachschalten, mit zwei Methoden
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben