Ausgabe des Klassennamens

iks

Mitglied
Guten Tag!
Ich habe folgendes simples Klassenkonstrukt:
Die Klasse Tier:
Java:
public class Tier {
	protected String Farbe;	
	Tier () {		
	}	
}

Die Klasse Pinguin:
Java:
public class Pinguin extends Tier{

}

Meine Testklasse Tiertest:
Java:
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 :pinguin
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.
 

HimBromBeere

Top Contributor
Alternativ kannst du auch (wenn du über toString() was anderes zurückgeben willst), wenn du einmal eine Instanz der Klasse erstellt hast, über
Code:
.getClass().getName()
rankommst (statisches Äquivalent wäre dann <Klassenname>.class)
 

knoppers

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

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

iks

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

Java:
	public String toString() {
		
		return "Pinguin";
	}

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

Gast2

Gast
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

Mitglied
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

Mitglied
Java:
	public String toString() {
		
		String  KlassenName = getClass().getName();
		return KlassenName;		
		
	}

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

HimBromBeere

Top Contributor
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.
 

Neue Themen


Oben