Forum: PC-Programmierung Java Vererbung Zuweisungskompatibilität


von Rocko11 (Gast)


Angehängte Dateien:

Lesenswert?

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?

von Rocko11 (Gast)


Lesenswert?

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?

von D. I. (Gast)


Lesenswert?

Der Java-Compiler und die Java-Runtime deines Vertrauens können dir 
diese Frage durch ausprobieren beantworten.

von rokko (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.