Identisch?

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi Leute,

wollte gern nur von euch wissen ob man das so sehen kann??
Code:
   Sohn refsohn = new Sohn();
	 Vater refvater = refsohn;	<=>	Vater ref = new Sohn();??

Frohe Weihnachten euch allen 😀
 
Ja, Sohnklasse hat von Vater geerbt.

Ach, was mir noch einfällt.
Das ist doch richtig, dass damit die Referenzvariable refvater vom Typ Vater nur auf
Methoden und Variablen in der Sohnklasse zugreifen kann, die die Vaterklasse auch
an die Sohnklasse vererbt hat und nicht auf die Methoden und Variablem der Sohnklasse, ist das richtig ?????

Gruß gast
 
JPKI hat gesagt.:
Richtig. Dazu müßtest du erneut von Vater auf Sohn casten.

Du meinst, wenn ich als Vater auf die Methoden der Sohnklasse zugreifen möchte oder was meinst Du??
Warum sollte ich dann explizit casten??
 
Anonymous hat gesagt.:
Ja, Sohnklasse hat von Vater geerbt.

Ach, was mir noch einfällt.
Das ist doch richtig, dass damit die Referenzvariable refvater vom Typ Vater nur auf
Methoden und Variablen in der Sohnklasse zugreifen kann, die die Vaterklasse auch
an die Sohnklasse vererbt hat und nicht auf die Methoden und Variablem der Sohnklasse, ist das richtig ?????

Gruß gast
Das war richtig.

Was ich noch sagen wollte: Angenommen du hast jetz nur noch die Vater-Variable, die du zuvor erstellt hast, dann müsstest du casten, um an die Methoden und Attribute der Sohn-Klasse heranzukommen. War ein wenig verwirrend ausgedrückt, tut mir leid.
 
Ach so,

dann würde das in etwas so aussehen??
Code:
  Vater refvater = new Sohn();
          Sohn refsohn = (Sohn) refvater;
und somit kann auch die Refernezvariable refvater auf die Methoden und Variablen der
Instanz vom Typ Sohn zugreifen, oder gibt es die Referenvariable refvater nicht mehr
dann aber eigentlich doch, oder ?????

Ist das richtig???

Wenn ja, dann hast Du mir echt weitergeholfen 🙂
 
Aufgrund des Titles sollte man vielleicht nochmal betonen:
Code:
Sohn refsohn = new Sohn();
Vater refvater = refsohn;
ist etwas anderes als
Code:
Sohn refsohn = new Sohn();
Vater ref = new Sohn();
Im ersten Fall gibt es nur EIN Objekt, d.h. 'refsohn' und 'refvater' sind Referenzen auf ein und dasselbe Objekt (d.h. die Objekte, auf die die Referenzen zeigen, sind identisch). Im zweiten Fall gibt es ZWEI Objekte - die können zwar gleich sein (wenn man sie zB. mit 'equals' vergleicht) aber identisch sind sie nicht.
 
Hi Marco13,

Im ersten Fall gibt es nur EIN Objekt, d.h. 'refsohn' und 'refvater' sind Referenzen auf ein und dasselbe Objekt (d.h. die Objekte, auf die die Referenzen zeigen, sind identisch). Im zweiten Fall gibt es ZWEI Objekte - die können zwar gleich sein (wenn man sie zB. mit 'equals' vergleicht) aber identisch sind sie nicht.

Das habe ich schon verstanden, dass im zweiten Fall, den Du darstellst die Referenzvariablen auf unterschiedliche
Instanzen der Klasse Sohn verweisen aber kannst Du auf meinen letzten Beitrag mit ja antworten, ob ich da richtig lag??
 
Anonymous hat gesagt.:
Ach so,

dann würde das in etwas so aussehen??
Code:
  Vater refvater = new Sohn();
          Sohn refsohn = (Sohn) refvater;
und somit kann auch die Refernezvariable refvater auf die Methoden und Variablen der
Instanz vom Typ Sohn zugreifen, oder gibt es die Referenvariable refvater nicht mehr
dann aber eigentlich doch, oder ?????

Ist das richtig???

Wenn ja, dann hast Du mir echt weitergeholfen 🙂
Angenommen, du hast nur die Variable refvater. Wenn du weißt, dass es sich dabei um ein Sohn-Objekt handelt, kannst du wieder auf Sohn casten (auch ohne eine neue Variable zu verwenden) und die Sohn-Methoden und -Attribute verwenden:
Code:
((Sohn)refvater).sohnMethode();
Das selbe bewirkt auch der folgende Code:
Code:
Sohn sohn = (Sohn)refvater;
sohn.sohnMethode();
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben