InformatikStudent84 Geschrieben 4. März 2004 Geschrieben 4. März 2004 Habe folgende Frage zu: public abstract class High { public High(int a) { this.a = a; System.out.println("High : Konstruktor " + a); } public void function1() { System.out.println("High.function1() " + a*2); } public abstract void view(); protected int a; } public class Medium extends High { public Medium(int n) { super(n/2); System.out.println("Medium: Konstruktor " + a); this.b = n; } public void view() { System.out.println("Medium.view(), a=" + a + ", b=" + ; } protected double b; } public class Low extends Medium { public Low(int n) { super(n/2); System.out.println("Low : Konstruktor " + n); this.c = n; } public void function1() { System.out.println("Low.function1() " + (a * ); } public void function2() { System.out.println("Low.function2() " + (a + ); } private int c; } Wenn ich folgende Testklasse habe und folgende Methode. Wieso geht folgendes nicht: public void a() { Low l1 = new Low(9); l1.function1(); l1.view(); High h1 = l1; h1.function1(); h1.function2(); ** } Wieso compielt der Compiler diese Zeile nicht und meldet mir den Fehler "cannot resolve symbol - method function2()"! ** Das ist mir absolut klar, wenn er doch h1.function1(); ausführt, muss das andere doch auch gehen. Danke! Zitieren
-roTekuGeL- Geschrieben 4. März 2004 Geschrieben 4. März 2004 Ich versteh dein coding nicht wirklich, aber in der High klasse ist keine Funktion 2 drin... kanns sein das es desswegen nicht geht? :confused: Zitieren
Matczek Geschrieben 7. März 2004 Geschrieben 7. März 2004 Du hast ihm gesagt das h1 ein High sei: High h1 = l1; Beim Aufruf von der Funktion 2 denkt er es immer noch, obwohl du ja l1 zugewiesen hast. Du musst ihm jetzt nur sagen, dass er ein Low sein. Das ganze heißt Type-Cast: (Low)h1.function2(); Mfg MAtczek Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.