Objektorientierung / Polymorphismus

DennisXX

Bekanntes Mitglied
Ich habe mal zwei Fragen:

Folgende Codezeile ist gegeben:

Java:
Iinterface ityp1 = (Iinterface)Naming.Lookup(IrgendeinObjekt);

Das Beispiel ist aus Java Rmi bzw. Verteilten Anwendungen. Warum muss hier zwingend mit (Iinterface) gecastet werden? Warum kann ich das nicht weglassen?


Ein weiteres Beispiel:

Ich habe drei Klasse (Klasse A, Klasse B, Klasse C).

B erweitert A und C erweitert B.

Frage:

WKann ich eigentlich im Rahmen des Polymorphismus solche Codezeilen schreiben?
Java:
Object o = new A();

oder

Java:
Object 0 = new C();

Geht das und falls nein warum nicht?

Danke für die Mithilfe !!
 

Murray

Top Contributor
Java:
Iinterface ityp1 = (Iinterface)Naming.Lookup(IrgendeinObjekt);

Das Beispiel ist aus Java Rmi bzw. Verteilten Anwendungen. Warum muss hier zwingend mit (Iinterface) gecastet werden? Warum kann ich das nicht weglassen?
Dazu müsste man die Definition von Naming.Lookup (übrigens. eine seltsame Schreibweise; normalerweise schreibt man Methodennamen klein) kenne; ich nehme aber mal an, dass diese Methode kein Iinterface, sondern eher ein Object liefert. Und dann muss man casten, um dem Compiler zu sagen "ja, mir ist klar, dass dieser Methode im Prinzip irgendein Object liefert kann; ich bin mir aber sicher, dass es zur Laufzeit eine Instanz einer Klasse sein wird, die Iinterface implementiert". Damit überbrückt man quasi die Typprüfung zur Compile-Zeit und verlagert sie in die Laufzeit- wenn die Methode kein passendes Objekt liefert, gibt es einen Laufzeitfehler.
 

Haave

Top Contributor
Zu deiner zweiten Frage:
Das ist zwar möglich, aber weil die Referenz dann vom Typ Object ist, kannst du damit dann auch nur noch die Methoden und Instanzvariablen erreichen, die in der Klasse Object deklariert sind. Sollte deine abgeleitete Klasse neue Methoden/Instanzvariablen haben, kannst du die damit afaik nicht erreichen.
 

Murray

Top Contributor
Ich habe drei Klasse (Klasse A, Klasse B, Klasse C).

B erweitert A und C erweitert B.

Frage:

WKann ich eigentlich im Rahmen des Polymorphismus solche Codezeilen schreiben?
Java:
Object o = new A();

oder

Java:
Object 0 = new C();

Geht das und falls nein warum nicht?
Ersteres geht, weil in Java alle Klassen (also auch A) von java.lang.Object abgeleitet sind und diese Zuweisung damit eine Verallgemeinerung ausnutzt ( "alle A-Instanzen müssen zwingend auch Instanzen der Klasse java.lang.Object sein").

Letzteres geht nicht, weil 0 kein gültiger Bezeichner für eine Variable ist (vermutlich ist das aber nicht wirklich, was Du wissen wolltest; vielleicht konkretisierst Du die Frage nochmal)
 

DennisXX

Bekanntes Mitglied
Ich meinte natürlich

Java:
Objekt o = new C();


Würde eigentlich

Java:
C varc = new Object();

oder
Java:
A vera = new Object();

eigentlich funktioniern oder geht das nicht?

Wäre denn das machbar:

Java:
A vera;

(Object) vera = new Object();
 

Murray

Top Contributor
Ich meinte natürlich

Java:
Objekt o = new C();


Würde eigentlich

Java:
C varc = new Object();

oder
Java:
A vera = new Object();

eigentlich funktioniern oder geht das nicht?
Nein, das geht nicht. Einer Variablen vom Typ A kannst Du nur Objekte zuweisen, die ebenfalls vom Typ A oder von einem von A abgeleiteten Typ ist (mal angenommen, A ist eine Klasse und kein Interface).

DennisXX hat gesagt.:
Wäre denn das machbar:

Java:
A vera;

(Object) vera = new Object();
Auch nicht; ein Cast auf der linken Seite einer Zuweisung ist Quatsch.
 

T0ken

Mitglied
Wäre denn das machbar:

Java:
A vera;

(Object) vera = new Object();



A vera = new A();
Object o;

o = vera; // funktioniert
a = o; // geht jetzt auch, da in o momentan eine referenz auf ein objekt der klasse A liegt

o = new Object();

vera = o; // geht nicht, da object nicht vom typ der klasse A ist (und in vera dürfen nur referenzen auf objekte vom typ der Klasse A abgelegt werden [oder von den subklassen])

vera = (A) o; // könnte jetzt funktionieren, kann aber auch einen laufzeitfehler geben ;)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
L Einführung Objektorientierung Java Basics - Anfänger-Themen 8
L Einstieg Objektorientierung Java Basics - Anfänger-Themen 10
H Wie geht eigentlich Objektorientierung? Java Basics - Anfänger-Themen 14
L Objektorientierung Java Basics - Anfänger-Themen 6
B Objektorientierung Java Basics - Anfänger-Themen 1
M Array und Objektorientierung? - TicTacToe Spiel Java Basics - Anfänger-Themen 43
T Objektorientierung-Kurze Frage Java Basics - Anfänger-Themen 5
L Hilfe! Objektorientierung Java Basics - Anfänger-Themen 3
S OOP Zusammenhang von Objektorientierung und Ausnahmebehandlungen Java Basics - Anfänger-Themen 6
C Objektorientierung? Java Basics - Anfänger-Themen 5
G Designfrage/Objektorientierung Java Basics - Anfänger-Themen 19
S Methoden Aufgabe zu ""Methoden" und "Objektorientierung" Java Basics - Anfänger-Themen 3
B OOP Programm zur Verdeutlichung von Objektorientierung Java Basics - Anfänger-Themen 7
T Initialisierungen der einzelnen Klassen - Objektorientierung Java Basics - Anfänger-Themen 4
B Objektorientierung Java Basics - Anfänger-Themen 2
W Einstieg Objektorientierung Java Basics - Anfänger-Themen 4
X Objektorientierung Einführung Java Basics - Anfänger-Themen 2
A Objektorientierung Klassen Java Basics - Anfänger-Themen 4
Spin Objektorientierung . Konzept Java Basics - Anfänger-Themen 4
M Objektorientierung Java Basics - Anfänger-Themen 3
M Objektorientierung - wie macht man's richtig? Java Basics - Anfänger-Themen 3
R ObjektOrientierung Java Basics - Anfänger-Themen 18
D Objektorientierung ? Java Basics - Anfänger-Themen 4
D Objektorientierung Listen Java Basics - Anfänger-Themen 2
J objektorientierung und uml Java Basics - Anfänger-Themen 5
D Objektorientierung - wie konsequent sollte man sein ? Java Basics - Anfänger-Themen 30
D Zuerst Objektorientierung oder GUI ? Java Basics - Anfänger-Themen 19
M Polymorphismus Java Basics - Anfänger-Themen 4
N Frage zum dynamischen Polymorphismus Java Basics - Anfänger-Themen 1
H Polymorphismus-Überschreiben Java Basics - Anfänger-Themen 1
V Frage zu Polymorphismus: Objekt der Subklasse in Referenz der Oberklasse Java Basics - Anfänger-Themen 4
1 Frage bzgl. Polymorphismus Java Basics - Anfänger-Themen 6
D Polymorphismus Java Basics - Anfänger-Themen 5
S Polymorphismus Problem Java Basics - Anfänger-Themen 3
S Polymorphismus bei Arrays Java Basics - Anfänger-Themen 7
G Polymorphismus und die richtige Anwendung Java Basics - Anfänger-Themen 6
J abstract & Polymorphismus Java Basics - Anfänger-Themen 11
G Polymorphismus & Erweiterbarkeit Java Basics - Anfänger-Themen 3
G Polymorphismus und Null Java Basics - Anfänger-Themen 8
S Polymorphismus und Vererbung Java Basics - Anfänger-Themen 6
P Frage zum Polymorphismus Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben