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.
class Haupt{
public static void main (String[] args){
Außen test = new Außen();
test.add("peter");
}
}
Java:
class Außen{
class Innen{
Object obj;
Innen(Object o){
obj = o;
}
}
void add(String name){
Mensch mann = new Mensch(name);
Innen neu = new Innen(mann);
}
}
In der Klasse Außen wird ja ein Objekt empfangen. Das Objekt Mensch speichert ja auch noch einen String, den Namen, mit Hilfe dem ich verschiedene Objekte unterscheiden kann. Wie kann man nun in der Klasse Innen den Namen ausgeben lassen?
In Innen hast du keinen Zugriff auf die Attribute oder Methoden von Mensch weil du die Variable als Object deklariert hast. Wenns dir nur um das ausgeben geht kannst du in Mensch die toString() überschreiben und in Innen aufrufen.
Wofür brauchst du überhaupt dieses komische Außen/Innen Konstrukt?
ausgeben() ist eine Methode der Klasse Mensch und kann nur von dieser aufgerufen werden. Du musst dein obj entweder gleich als Mensch definieren oder castest es.
Eigentlich ist's doch recht einfach: EikeB's erster Vorschlag mit "toString()" ist der sauberste und buzz!dev's mit casts versucht man als letztes bzw. eher gar nicht.
[EDIT]Ach so... es geht möglicherweise gar nicht nur um eine simple Ausgabe, sondern mehr um den Zugriff auf den realen Klassentyp. Das geht dann wohl nur mit Generics.[/EDIT]
jetzt weiß ich, wieso hier so viele Leute auf mehr als 2000+ Beiträge im Forum kommen: wenn einmal jemand etwas schreibt, wird es von mindestens zwei Leuten wiederholt. manchmal besonders originell mit zusätzen wie "ist doch recht einfach".
nachdem jetzt schon zwei Leute meinen Vorschlag als schlecht abgetan haben, würde ich in meiner Unwissenheit darum bitten, mir zumindest mittzuteilen, warum dem so ist.
jetzt weiß ich, wieso hier so viele Leute auf mehr als 2000+ Beiträge im Forum kommen: wenn einmal jemand etwas schreibt, wird es von mindestens zwei Leuten wiederholt. manchmal besonders originell mit zusätzen wie "ist doch recht einfach".
nachdem jetzt schon zwei Leute meinen Vorschlag als schlecht abgetan haben, würde ich in meiner Unwissenheit darum bitten, mir zumindest mittzuteilen, warum dem so ist.
Netter Einwand. Werde ich mal zu Herzen nehmen und in meinen nächsten Posts einmal mehr darauf achten, gleich 'ne Begründung dafür zu liefern, wie in Zahlreichen anderen Posts auch. Aber die Anzahl der Posts ist gar nicht so entscheidend, man kann auch 2000+ Posts mit lauter dummen Ideen haben oder auch gar keine, wenn man sich nicht anmeldet. Musst jetzt auch nicht gleich los flamen, hast ja recht.[/OT]
Aber davon mal ab: Das die reale Klasse "Mensch" erst innerhalb der "add"-Methode instanziert wird, ist auch so gewollt? Dann kann man es nämlich in Inner auch gleich als solches deklarieren.