Java Vererbung Zuweisungskompatibilität

Gast #2624594
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?
Angehängte Dateien:
Gast
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?
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.