.toString(); // Ausgabe: Attribut von Vaterklasse

m1k3ch3ck

Mitglied
Hallo,

um mein Problem kurz anzuschneiden:

Klasse 1: Zimmer (hat Attribut int x)
Klasse 1a: Halbpensionszimmer (erbt Attribut int x und hat eigenes Attribut int y)

Aufgabe:
toString für 1a schreiben mit Ausgabe sämtlicher Attributen.
---

Da ich was Basics angeht noch nicht so geübt bin verwechsel ich sehr gerne Dinge und würde mich sehr freuen wenn man mich korrigiert, d.h. genau sagt wo mein Gedanke falsch war, wo man meinen Gedanken eigentlich nutzen würde - das wäre mir sogar noch wichtiger als die Lösung selbst.


Meine Lösungsansätze:

Java:
public String toString(){
return new String ("eigener wert lautet: "+y+" geerbter wert lautet: "+super.x);
}

ich weiss dass das super hier falsch ist, da ich damit auf das attribut der vaterklasse zugreifen würde.
aber da fängts bei mir schonmal an:
- ist die vaterklasse nicht eine klasse, d.h. da gibts noch garkein objekt von, d.h. super.x ist auch dementsprechend noch garnicht instanziiert ?
- wie spreche ich das geebrte x an ? einfach nur mit "x" ? was wenn es in der vaterklasse private ist ?

need erklärung =(
habs (ernsthaft) versucht nachzulesen, leider sind das jedoch irgendwie grundsätzliche verständnisprobleme an der objektorientierung. weder die super/vererbung/toString-Kapitel aus meinem buch, noch die java api konnte mir weiterhelfen.


vielen dank,
julia
 

DerEisteeTrinker

Bekanntes Mitglied
erstmal, du brauchst da kein super

zweitens du kann wenn es protected oder public ist direkt über x auf den Wert des Vaters zugreifen

drittens, sollte x private sein, musst du im Vater einen sogenannten Getter implementieren, damit du das über diese Methode aufrufen kannst

Java:
public class Vater {
	private int x;
	
	protected int getX() {
		return x;
	}
}

public class Sohn extends Vater {
	private int y;
	
	@Override
	public String toString() {
		return "WAHU ICH BIN EIN TEXT " + getX() + " UND NOCH MEHR " + y;
	}
}


zur erläuterung:

private heißt, dass du nur innerhalb der Klasse darauf zugreifen kannst auch Kinder sind nicht zugriffsberechtigt

protected heißt, es ist für die Klasse zugänglich und für alle Kinder von dieser Klasse

kein Modifier ist meines Wissens nach, dass es für alle Klassen im Paket sichtbar ist.

public heißt, es können alle Klassen darauf zugriefen, das sollte man bei Attributen möglichst vermeiden
 

Haave

Top Contributor
Also, ich erkläre es mal an verschiedenen Codestücken:

Fall 1:
Java:
class Zimmer {
	int x = 5;
}
class Halbpensionszimmer extends Zimmer {
	int y;
}
class Testzimmer {
	public static void main(String[] args) {
		Halbpensionszimmer h = new Halbpensionszimmer();
		System.out.println(h.x);
	}
}
Das klappt problemlos, lässt sich kompilieren und wird
Code:
5
auswerfen. Das Objekt h erhält seine eigene Kopie von x aus Zimmer sowie von y aus Halbpensionszimmer. Und nein, du brauchst kein Objekt aus Zimmer instanziieren, damit die Unterklasse HPZ auf Zimmers int x zugreifen kann, denn es ist wie gesagt nur eine Kopie, die h erhält - sozusagen eine Spezialanfertigung für h aus Zimmers Schablone für ein int x :)


Fall 2:
Java:
class Zimmer {
	private int x = 5;
}
//Rest wie gehabt
Hier sieht es anders aus und der Compiler wird folgenden Fehler ausspucken:
Code:
Testzimmer.java:12: x has private access in Zimmer
		System.out.println(h.x);
		                    ^
1 error
In diesem Fall braucht die Klasse Zimmer eine auf public geschaltete get-Methode für dieses int x, die sie an ihre Unterklassen weitervererbt, damit diese dennoch auf das x zugreifen können:
Java:
class Zimmer {
	private int x = 5;
	public int getX() {
		return x;
	}
}

class Halbpensionszimmer extends Zimmer {
	int y;
}

class Testzimmer {
	public static void main(String[] args) {
		Halbpensionszimmer h = new Halbpensionszimmer();
		System.out.println(h.getX());
	}
}
h hat nun also wieder eine Kopie von x, kann sie aber nicht direkt erreichen, sondern benötigt eine get-Methode (bzw. eine set-Methode, wenn x verändert werden soll).

War das verständlich?
 

m1k3ch3ck

Mitglied
Vielen Dank euch beiden. Eure Beispiele haben mir sehr geholfen.
Was Getter(/Setter) sind weiss ich.

Was sich meinem Wissen entzog war die Information dass Kinderklassen auf (public) Attribute des Vaters genauso zugreifen wie auf eigene.
Sofern x im Vater also public ist, kann ich ganz normal:

System.out.println(x+","+y); //Kure Rückmeldung ob das richtig ist wäre noch lieb.

Als wäre x wie y in der Kinderklasse vorhanden.
Bei private einfach über getter:

System.out.println(this.getX+","+y); //Kure Rückmeldung ob das richtig ist wäre noch lieb.

Kapiert.
Vielen Dank,
Julia.
 

Haave

Top Contributor
System.out.println(x+","+y); //Kure Rückmeldung ob das richtig ist wäre noch lieb.
[…]
System.out.println(this.getX+","+y); //Kure Rückmeldung ob das richtig ist wäre noch lieb.
Wird das so in der main()-Methode stehen oder soll das in einer Methode der Unterklasse sein (das
Code:
this
deutet das jedenfalls an)?
Falls in main(), fehlen noch die Referenzen auf das Objekt, also (um an mein Beispiel oben anzuknüpfen):
Java:
System.out.println(h.x+","+h.y)
System.out.println(h.getX()+","+h.y) //nicht die Klammern bei getX() vergessen, es ist eine Methode!

Im zweiten Fall ist das so in Ordnung; das
Code:
this
kannst du sogar noch weglassen:
Java:
class Zimmer {
	private int x = 5;
	public int getX() {
		return x;
	}
}

class Halbpensionszimmer extends Zimmer {
	int y = 3;
	void ausgabe() {
		System.out.println(getX()+", "+y);
	}
}

class Testzimmer {
	public static void main(String[] args) {
		Halbpensionszimmer h = new Halbpensionszimmer();
		h.ausgabe();
	}
}
 

m1k3ch3ck

Mitglied
Ich hätte meine Vorschläge als Methode in die Unterklasse gesteckt.
Funktioniert "this" in der main nicht ?
Dachte "this" wird automatisch auf die laufende Instanz bezogen, würde also in Methoden von Klassen, wie auch Methoden in der laufenden Main funktionieren.
 

Haave

Top Contributor
Funktioniert "this" in der main nicht ?
Ja, das funktioniert nicht, sondern nur in Methoden von Klassen.
Edit: Stell dir nur mal vor, du schaffst zwei Objekte aus der Klasse Halbpensionszimmer. Worauf sollte sich so etwas wie
Code:
this.getX()
in der main-Methode denn beziehen?

Wie hast du es dir denn genau gedacht? Poste bitte mal Code.
 
Zuletzt bearbeitet:

m1k3ch3ck

Mitglied
Java:
// vaterklasse mit attribut x
public class vaterklasse{
private int x=0;

public getX(){
return x;
}
}

// tochterklasse mit attribut y
public class tochterklasse extends vaterklasse{
private class int y=1;
//toString@tochterklasse
public String toString(){
return new String (this.getX()+","+y);
}

das sollte ja funktionieren.
wäre x nicht private, sondern public, dann:
Java:
...
public String toString(){
return new String (x+","+y);
}
 

Ark

Top Contributor
Bitte merken: in 99% aller Fälle ist ein expliziter Aufruf eines String-Konstruktors überflüssig oder sogar falsch.

In deinem Fall reicht es, wenn du [c]return x+","+y;[/c] schreibst.

Ark
 

Ark

Top Contributor
Die Klammern sind überflüssing, weil er das automatisch als String zusammenwurstet
Die Klammern haben damit nichts zu tun. Es geht um [c]new String(...)[/c], dieses ist überflüssig. Die Klammern waren also nur da, weil der Konstruktur nur mit Klammern aufgerufen werden kann. Wenn der Aufruf des Konstruktors wegfällt, sind auch die Klammern nicht mehr nötig.

Ark
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Wie analysiert JSON eine toString-Ausgabe ? Java Basics - Anfänger-Themen 1
V Neue Ausgabe von toString nach Methodenaufruf Java Basics - Anfänger-Themen 9
B toString mit optionaler Ausgabe überrschreiben Java Basics - Anfänger-Themen 5
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 13
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 1
E Richtige Ausgabe nur mit toString() - Warum? Java Basics - Anfänger-Themen 4
G Gregorian Calendar aus toString() Ausgabe wiederherstellen Java Basics - Anfänger-Themen 4
T keine Ausgabe von toString obwohl keine Fehlermeldung Java Basics - Anfänger-Themen 5
W LocalDate toString und nach Split falsch "erkannt"? Java Basics - Anfänger-Themen 8
W ArrayList und toString Java Basics - Anfänger-Themen 17
W toString bei composition Java Basics - Anfänger-Themen 4
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
E Einrücken inner der toString()-Methode Java Basics - Anfänger-Themen 34
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
M Polymorphie toString Java Basics - Anfänger-Themen 13
Y Wie kann ich ein Element in einer toString finden. Java Basics - Anfänger-Themen 2
A Implementierung von String toString methode() Java Basics - Anfänger-Themen 4
P falscher booleanwert bei toString Java Basics - Anfänger-Themen 4
P Methode die eigentlich einen Scanner benötigt mit toString() Java Basics - Anfänger-Themen 5
J Methoden toString()-Date Formatter Java Basics - Anfänger-Themen 8
M Die Inhalte eines Arrays mit der Methode Arrays.toString ausgeben Java Basics - Anfänger-Themen 4
H toString-Methode Java Basics - Anfänger-Themen 24
E Vererbung mit toString() Java Basics - Anfänger-Themen 6
O Referenz - toString Java Basics - Anfänger-Themen 9
J toString-Methode in Verbindung mit varArgs-Konstruktor Java Basics - Anfänger-Themen 18
C Methoden toString Java Basics - Anfänger-Themen 4
B toString() Dilemma Java Basics - Anfänger-Themen 7
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
D Arrays.toString spuckt null aus? Java Basics - Anfänger-Themen 3
S Methoden equals(object o) / toString Java Basics - Anfänger-Themen 15
K array in toString des objektes ausgeben Java Basics - Anfänger-Themen 1
Psypsy hashCode, equals und toString Java Basics - Anfänger-Themen 3
J toString() Methode und ArrayList Java Basics - Anfänger-Themen 1
K toString() Java Basics - Anfänger-Themen 1
H Erste Schritte Arrayes.toString methode funktioniert nicht Java Basics - Anfänger-Themen 2
A Problem mit toString Methode Java Basics - Anfänger-Themen 8
T String toString methode nicht vererbt ... Java Basics - Anfänger-Themen 4
I Vererbung toString() Frage Java Basics - Anfänger-Themen 5
M Unbekannte Nummer bei Aufruf der toString Methode Java Basics - Anfänger-Themen 3
S Datentypen List.toString wirft NullPointerException Java Basics - Anfänger-Themen 5
A ToString()-Methode richtig benutzen Java Basics - Anfänger-Themen 3
J ArrayList toString() Übergabe Fehler Java Basics - Anfänger-Themen 2
F Eigene LinkedList - toString Java Basics - Anfänger-Themen 10
A JList / toString modify Java Basics - Anfänger-Themen 2
J Vererbung Überschriebene toString-Methode aufrufen Java Basics - Anfänger-Themen 10
M toString gibt "null" statt "0.0" aus Java Basics - Anfänger-Themen 5
M toString Java Basics - Anfänger-Themen 7
H Integer.toString(int i) vs. String.valueOf(int i) Java Basics - Anfänger-Themen 12
C Methoden String von einem toString() herauslesen Java Basics - Anfänger-Themen 2
B Wann toString() überschreiben? Java Basics - Anfänger-Themen 21
P toString-Methode gibt immer null vor Variable aus Java Basics - Anfänger-Themen 9
N .toString() und (string) Java Basics - Anfänger-Themen 2
B Methoden toString Methode mit Schlüsselwort new Java Basics - Anfänger-Themen 3
S schwierigkeit mit in der verwaltungsklasse benutzen von toString() Java Basics - Anfänger-Themen 7
J Zweidimensionales Array durch ToString ausgeben lassen Java Basics - Anfänger-Themen 21
N Matrix an toString Java Basics - Anfänger-Themen 7
A Werteausgabe des Construktors mit toString Java Basics - Anfänger-Themen 2
D super.tostring Java Basics - Anfänger-Themen 8
A Stringarray toString Java Basics - Anfänger-Themen 5
L toString()-Methode in verschieden Klassen Java Basics - Anfänger-Themen 3
R Frage zu statischer Methode toString() Java Basics - Anfänger-Themen 3
S Escape Sequenz in der toString() ? Java Basics - Anfänger-Themen 4
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
A Arrays.asList(s).toString() ohne [] und , Java Basics - Anfänger-Themen 3
P toString Java Basics - Anfänger-Themen 4
K toString Java Basics - Anfänger-Themen 10
F toString Methode ausgeben Java Basics - Anfänger-Themen 3
A Object -> String mit valueOf, toString oder cast ? Java Basics - Anfänger-Themen 6
R getClass und getName sowie toString Java Basics - Anfänger-Themen 10
D Arrays.toString problem Java Basics - Anfänger-Themen 2
D array.toString() wieso funktioniert es nicht Java Basics - Anfänger-Themen 4
S toString-Methode für Map Java Basics - Anfänger-Themen 15
L OOP hilfe bei tostring methode Java Basics - Anfänger-Themen 6
D toString überschreiben + Exception werfen Java Basics - Anfänger-Themen 3
H toString / println Java Basics - Anfänger-Themen 2
H toString() erben? Java Basics - Anfänger-Themen 3
A Arrays.toString() ohne [ und ] Java Basics - Anfänger-Themen 2
K Arrays.toString(); funktioniert nicht Java Basics - Anfänger-Themen 4
A byte.toString() -> Datenmüll Java Basics - Anfänger-Themen 52
K Problem mit .toString und FileReader Java Basics - Anfänger-Themen 2
G toString Problem Java Basics - Anfänger-Themen 12
T Warum Fehlermeldung bei diesem ToString Programm? Java Basics - Anfänger-Themen 2
B toString Java Basics - Anfänger-Themen 5
S Was macht [Integer.toString(number, tarRadix)] Java Basics - Anfänger-Themen 3
G Probleme bei toString Überschreibung Java Basics - Anfänger-Themen 6
M int toString Datentypen Umwandeln, AnfängerProblem Java Basics - Anfänger-Themen 3
D ToString Java Basics - Anfänger-Themen 3
C Bedeutung von toString im Bezug auf Text Java Basics - Anfänger-Themen 4
N char[] aus JPasswordField toString() Java Basics - Anfänger-Themen 6
T Boolean toString ? Java Basics - Anfänger-Themen 3
D Frage zum Aufruf einer toString-Methode Java Basics - Anfänger-Themen 2
H toString(); varargs; bitSet Java Basics - Anfänger-Themen 8
M getClass() und getClass().toString() Java Basics - Anfänger-Themen 4
V toString()-Methode Java Basics - Anfänger-Themen 9
S PrintWriter-Probleme mit toString Methode->Person@17182c1 Java Basics - Anfänger-Themen 10
P Vektor toString? Java Basics - Anfänger-Themen 2
S valueOf() vs. toString() Verwendung??? Java Basics - Anfänger-Themen 13
G Frage zur toString ? Java Basics - Anfänger-Themen 4
L .toString wieder rückgängig machen Java Basics - Anfänger-Themen 7
H Was ist toString ??? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben