# Ausgabe des Klassennamens



## iks (27. Jan 2012)

Guten Tag!
Ich habe folgendes simples Klassenkonstrukt:
Die Klasse Tier:

```
public class Tier {
	protected String Farbe;	
	Tier () {		
	}	
}
```

Die Klasse Pinguin:

```
public class Pinguin extends Tier{

}
```

Meine Testklasse Tiertest:

```
public class TierTest {

	public static void main(String[] args) {
		
		Pinguin PinguEins = new Pinguin();
		System.out.println(PinguEins);
	}
}
```
Als Ausgabe bekomme ich: Pinguin@f4a24a
Rauskommen soll aber inguin
Gibt es eine Anweisung, mit der ich das bewerkstelligen kann?
An der Testklasse soll nichts verändert werden!

Schonmal im Vorraus großen Dank für alle Mühen.


----------



## Gast2 (27. Jan 2012)

Du musst die toString() Methode von Pinguin oder Tier entsprechend überschreiben.


----------



## HimBromBeere (27. Jan 2012)

Alternativ kannst du auch (wenn du über toString() was anderes zurückgeben willst), wenn du einmal eine Instanz der Klasse erstellt hast, über 
	
	
	
	





```
.getClass().getName()
```
 rankommst (statisches Äquivalent wäre dann <Klassenname>.class)


----------



## Gast2 (27. Jan 2012)

iks hat gesagt.:
			
		

> An der Testklasse soll nichts verändert werden!


----------



## knoppers (27. Jan 2012)

Oder einfacher, wenn du es mit "getClass().getSimpleName()" machst.


```
public class TierTest {
 
    public static void main(String[] args) {
        
        Pinguin PinguEins = new Pinguin();
        System.out.println(PinguEins.getClass().getSimpleName());
    }
}
```


----------



## iks (27. Jan 2012)

Okay, das funktioniert, hab jetzt folgendes in die Klasse Pinguin eingefügt:


```
public String toString() {
		
		return "Pinguin";
	}
```

Damit erhalte ich dann auch eine korrekte Ausgabe, ich nehme an so war es auch gemeint!?


----------



## Gast2 (27. Jan 2012)

Joa, so gehts. Allgemeiner wirds wenn du die toString() Methode von Tier überschreibst und da den Klassennamen ausgeben lässt. Dann gilt das für Die Klasse Tier sowie allen Unterklassen.


----------



## iks (27. Jan 2012)

Die Aufgabe ist so perfekt gelöst, die Testklasse war vorgegeben, sowie die Bildschirmausgabe...daher ist das Überschreiben der toString() Methode auf jeden Fall eine Lösung der Aufgabe und damit: Abgehakt!

Vielen Dank an Alle!


----------



## iks (27. Jan 2012)

Wie lasse ich denn den Klassennamen ausgeben?


----------



## iks (27. Jan 2012)

Ah, schon klar, mit getClass();


----------



## iks (27. Jan 2012)

```
public String toString() {
		
		String  KlassenName = getClass().getName();
		return KlassenName;		
		
	}
```

So ists natürlich deutlich besser, PERFEKT! DANKE!:toll:


----------



## HimBromBeere (27. Jan 2012)

Ob es sinnvoll ist, bei einer Zeichenkette wie dem Klassennamen (der sich nur sehr sporadisch bis nie ändert) selbigen in einer toSring()-Methode über getClass() zu erhalten... NAJA.


----------

