Polymorphie A obj = new B; "cannot find symbol app()"

blauerninja

Mitglied
Hallo,
ich hab zwei Klassen A und B, wobei B extends A und B hat Instanzmethode public app() (A hat sie nicht!)

Nun erstelle ich zum Testen ein Objekt als: A obj = new B; und rufe dann die app()-Methode von obj auf.
Ich bekomme beim Kompilieren eine Fehlermeldung "cannot find symbol app(), variable obj of type A".

Ich verstehe den Fehler nicht. obj ist zwar vom Typ A, jedoch ein B-Objekt. Durch Polymorphie kein Problem. Als B-Objekt muss obj aber die Methode app() besitzen.
Wo ist mein Denkfehler?

Hoffe, dass jemand da besser bescheid weiß. Danke im Vorraus.
 
Dein Denkfehler ist, dass du eine Referenz auf einen Typen A ist. Niemand kann wissen, was wirklich dahinter ist. Es ist aber ganz bestimmt ein A, darum kann auf alle Methoden und Member von A und den höheren Klassen (bis zu Object) zugegriffen werden.
Wenn du ein Case hast, in dem du so etwas wirklich benötigst, dann ist das meist ein Designfehler.
 
dadurch das du dein B-objekt nach A castest *was ja möglich ist weil B von A erbt* kennt der compiler auch nur die methoden von A ... spezifische methoden in die erst in B deklariert wurden meckert er aber an weil diese eben nicht in A enthalten sind ...

wenn du B.irgendEineMethode callen willst ... dann musst du es auch als [c]B obj=new B()[/c] deklarieren ...
 
Da ich einige Instanzen der Unterklassen erstellen möchte, hab ich gewollt, dass ich im Code übersichtlicher ist, so wie hier:

A obj1 = new B();
A obj2 = new C();

Versteh ich's richtig, dass die Methode app() nicht zugreifbar ist, weil obj quasi nur auf die Klasse A beschränkt wird und somit alles aus B nicht zugreifbar ist?
 
Da ich einige Instanzen der Unterklassen erstellen möchte, hab ich gewollt, dass ich im Code übersichtlicher ist, so wie hier:

A obj1 = new B();
A obj2 = new C();

Versteh ich's richtig, dass die Methode app() nicht zugreifbar ist, weil obj quasi nur auf die Klasse A beschränkt wird und somit alles aus B nicht zugreifbar ist?


wurde von irgendjemandem schon erklärt
 

Neue Themen


Zurück
Oben