Hallo, ich habe folgende Klassen, abstracte Klassen und Interface zur Verfügung und muss ein Diagramm zeichnen sowie einige Zuweisungen überprüfen: interface A { } abstract class B implements A { } interface C extends A { } class D extends B implements C { } class E extends B { } class F implements C { } Das Diagramm habe ich bereits gezeichnet (hoffe es stimmt.) nun muss ich folgende Zuweisungen als gültig oder ungültig angeben (handelt sich um static casts): void c1() { D d = new D(); A a = d; B b = d; C c = d; E e = d; F f = d; } void c2() { F f = new F(); A a = f; B b = f; C c = f; D d = f; E e = f; } void c3() { E e = new E(); A a = e; B b = e; C c = e; D d = e; F f = e; } void c4() { B b = new D(); A a = b; C c = b; D d = b; E e = b; F f = b; } void c5() { C c = new D(); A a = c; B b = c; D d = c; E e = c; F f = c; } void c6() { C c = new F(); A a = c; B b = c; D d = c; E e = c; F f = c; } Man darf ja einer Basisklasse eine Unterklasse zuweisen, wie ist es aber wenn ich zum Beispiel C c = new F() habe? darf ich dann z.B A a = c zuweisen?
Ich bin auf folgendes gekommen: void c1() { D d = new D(); gültig A a = d; ungültig B b = d; ungültig C c = d; ungültig E e = d; ungültig F f = d; ungültig } void c2() { F f = new F();gültig A a = f; ungültig B b = f; ungütlig C c = f; ungültig D d = f; ungütlig E e = f; ungütlig } void c3() { E e = new E();gültig A a = e; ungültig B b = e; ungültig C c = e; ungültig D d = e; ungültig F f = e; ungültig } void c4() { B b = new D();gültig A a = b; ungültig C c = b; ungültig D d = b; gültig E e = b; ungültig F f = b; ungültig } void c5() { C c = new D();gültig A a = c; ungültig B b = c; ungültig D d = c; gültig E e = c; ungültig F f = c; ungültig } void c6() { C c = new F();gültig A a = c; ungültig B b = c; ungültig D d = c; ungültig E e = c; ungültig F f = c; gültig } ich bin auf das gekommen, ist das richtig?
Der Java-Compiler und die Java-Runtime deines Vertrauens können dir diese Frage durch ausprobieren beantworten.
Dein Diagramm von interface A { } abstract class B implements A { } interface C extends A { } class D extends B implements C { } class E extends B { } class F implements C { } kannst du mit Eclipse überprüfen, markieren und dann ctrl + T die Hirarchie anzeigen lassen
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.