# Objektname statt Adresse ausgeben



## Rufus (22. Nov 2010)

Hi,

ich würde gerne den Namen des Objektes ausgeben anstatt der Adresse im Speicher (z.B. Vorratslager@190d11). 
In Zeile 11 soll der also z.B: "Vorratstank: Wassertank" ausgeben und nicht "Vorratstank: Vorratslager@190d11").

Hab schon gegoogled und hier die Forumssuche benutzt, aber nichts gefunden .
Kann mir einer dabei helfen?



```
public class Vorratslager extends Tanklager {
	Vorratslager(double fass, double inh, double fuell, boolean vent) {
		super(fass, inh, fuell, vent);
		fassung = fass;
		inhalt = inh;
		fuellmenge = fuell;
		ventil = vent;
	}

	public void getStatus() {
		System.out.println("Vorratstank: " + this 
                                + "\n" + "Fassung: " + fassung
				+ "\n" + "Inhalt: " + inhalt + "\n" + "Fuellmenge: "
				+ fuellmenge + "\n" + "Ventil: " + ventil);
	}

	public void remove(double rem) {
		inhalt -= rem;
	}
}
```


----------



## Der Müde Joe (22. Nov 2010)

```
toString()
```
 überschreiben....

EDIT:
System.out.println ruft immer toString() auf. und wenn nicht überschrieben:
Object (Java Platform SE 6)


----------



## ThreadPool (22. Nov 2010)

Vorratslager@190d11 ist keine Adresse sondern Klassenname+@+hashCode


----------



## Der Müde Joe (22. Nov 2010)

so als bsp:

```
public class Foo {

	@Override
	public String toString() {
		return "Foo";
	}

	public static void main(String[] args) {
		Foo foo = new Foo();
		System.out.println(foo); //Foo
		foo = new Foobar();
		System.out.println(foo); // Foobar
	}

	static class Foobar extends Foo {

		@Override
		public String toString() {
			return "Foobar";
		}
	}

}
```


----------



## Ralph-Uwe (22. Nov 2010)

Du kannst Deinem Vorratsbehälter auch einen Namen geben,
in dem Du eine private Variable "Namen" definierst und diesen dann ausgibst.

Woher soll die Ausgabe wissen, dass es ein Wassertank ist und kein Öltank?


----------

