www.mikrocontroller.net

Forum: PC-Programmierung Java Vererbung Zuweisungskompatibilität


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Rocko11 (Gast)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht 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?

Autor: Rocko11 (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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?

Autor: D. I. (grotesque)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Der Java-Compiler und die Java-Runtime deines Vertrauens können dir 
diese Frage durch ausprobieren beantworten.

Autor: rokko (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net