Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
wenn ich mich nicht täusche gibt es die Methode toString um nicht Referenzen sondern den Inhalt auszugeben?
Das klappt soweit wenn ich eine toString Methode erstelle und die Variablen, welche in der Methode übergeben wurde ausgebe.
wie gebe ich nun in der toString Methode die Werte einer anderen Klasse aus
Meine ToString Methode ist in der Klasse Peter.
dort gibt es die Variablen String name, und Color farbe;
Wenn ich jetzt return name + farbe mach. Dann gibt er mir den Namen Peter zurück, aber die Color nur die Referenz.
Bsp: Ich erstelle ein Objekt Peter mit Namen und der Farbe grün(gruen) aus der Klasse Color.
Da gruen von der Klasse Color kommt, klappt meine toString Methode nicht mit Color..
Naja, erstmal hat jede Klasse (weil jede Klasse von der Klasse java.lang.Object erbt) eine toString()-Methode, nämlich per Default die von java.lang.Object, welche so implementiert ist:
Was du dann bekommst, ist eben ein String, der sich aus dem vollqualifizierten Klassennamen, einem @-Zeichen sowie dem Hashcode als Hexadezimalstring formatiert zusammensetzt. Das hat erstmal nichts mit einer "Referenz" zu tun. Das ist nur die Default-Implementierung von Object.toString(). Und der hashCode() (falls die Klasse die Methode hashCode() nicht überschreibt) ist häufig der System.identityHashCode(), der sich, ja, aus der Speicheradresse des Objektes ersetzt. Das ist aber unspezifiziert.
Wenn du eine eigene Klasse `Color` definiert hast, dann musst du eben nun in dieser Klasse auch toString() implementieren/überschreiben. Die Klasse java.awt.Color kannst du ja nicht meinen, da diese bereits eine toString()-Methode implementiert, die die RGB-Werte als String zurückgibt.
@O2016 Was genau soll ausgegeben werden? Das folgende Programm
Java:
import java.awt.Color;
public class Hauptprogramm {
public static void main(String[] args) {
Color gruen = new Color(0, 255, 0);
System.out.println(gruen);
}
}
Und noch eine Kleinigkeit: Die return Anweisung ist kein Methodenaufruf und auch kein Operator, somit der dahinterstehende Ausdruck auch kein Parameter oder Operand, braucht also keine Klammern.
`return "Farbe: " + farbe;` reicht also.