Klausur 19.03.2007 Aufgabe 4

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Klausur 19.03.2007 Aufgabe 4
Mit Eclipse habe ich folgende Lösung erarbeitet:

  1. Af
  2. Bm1
  3. Error B nicht auf A castbar
  4. Am2
  5. Bm3
  6. Bf
  7. Error: a cannot be resolved to a type
  8. Bm1
  9. Bm2
  10. Am3

Könnte mir jemand erklären warum es bei 7. zu dem Fehler kommt?


Und ich versteh nicht, warum man bei der 5 Bm3 hat und nicht Am3, weil m3() ist doch static und da wird die Methode doch dann auf dem statischen Typ der A ist aufgerufen oder nicht?


A hat keine Oberklasse. Also gibt es A.super nicht.

Anmerkung zu 3. „Error B nicht auf A castbar“ ist falsche Begruendung. B ist auf A castbar … allerdings ist m1() in A private also von aussen nicht aufrufbar.

[Disclaimer: Ich habe keine Ahnung von Java, also bei Bedarf korrigieren!]


Man ruft this.m3() auf und this von B hat den statischen Typen B.

[Disclaimer: Ich habe keine Ahnung von Java, also bei Bedarf korrigieren!]


also ich dachte immer man kann nur zu dem casten was der dynamische Typ ist… und nicht zur Oberklasse…


Dann hast du falsch gedacht… Man kann (erfolgreich) zu allem Casten, was in der Vererbungshierarchie des dynamischen Typs vorkommt.


also kann ich immer zu allen Oberklassen casten und allen Unterklassen…


Ich kann nur noch einmal darauf verweisen:

http://forum.codecall.net/java-tutorials/20719-upcasting-downcasting.html


habt ihr vielleciht irgendwo ne liste mit grob allen regeln so bezüglich vererbung usw. ?

Ich blicke da nämlich imme rnoch nicht so durch.