Theoretische Hausaufgabe

Status
Nicht offen für weitere Antworten.

The Dude

Mitglied
Hallo,

Ich habe Probleme beim Lösen untenstehender Aufgabe. Ich verstehe schon die grundlegenden Konzepte scheinbar nur nicht so gut.

Für jede Hilfe bin ich sehr dankbar.

Danke,

Dude


Gebe für 1a) bis 1h) an, ob das jeweilige Code Fragment korrekt ist oder einen Compiler / Runtime Fehler auslöst.

Code:
interface I1 { }
interface I2 { }


abstract class A implements I1 { }
class B extends A implements I2 { }
class C implements I2 { }

I1 i1; I2 i2; A a; B b; C c;

1a     a = new A();     b = a;
1b     i2 = new C();    b = i2;
1c     i2 = new C();    b = (B)i2;
1d     a = new B();     i1 = a;

1e     i2 = new C();    c = (C)i2;
1f      b = new B();     c = (C)b;
1g     a = new C();     i1 = a;
1h     b = new I1();    a = b;
 
R

Roar

Gast
wir machen hier keine hausaufgaben!
was verstehst du denn nicht? wo hängst du fest?

edit: aber ich find die aufgabe cool 8)
 
B

Beni

Gast
Musst einfach folgende Regeln beachten:

1. Man kann nur ganze Klassen instanzieren. d.h. abstrake Klassen und Interfaces geht nicht.
2. Ein Cast funktioniert nur dann gut, wenn das Objekt das gecastet werden soll, auch den entsprechenden Typ hat:

Code:
Number n = new Double( 1.2 );
Integer i = (Integer)n; // <<< ClassCastException: ein Double ist kein Integer
 

The Dude

Mitglied
Ok, danke für die Antworten - hätt ich bloss nicht geschrieben, dass es sich um eine Hausaufgabge handelt ...


1a) & 1h) gehen nicht, da sie eine Abstrakte Klasse bzw. Interface instanzieren wollen.

1b) da geht es schon los:
Code:
i2 = new C();
ist korrekt, da C ein I2 ist aber wie ist es mit
Code:
b = i2;
? Klasse B implementiert Interface I2 aber ist zusätzlich eine Erweiterung von A - ist b trotzdem typenkompatibel mit i2 ?

1e) - was ist da der Haken, auf den ersten Blick sieht das ganze (trivial) richtig aus.
 
B

Beni

Gast
Code:
1b     i2 = new C();    b = i2;

i2 = ... funktioniert.

Aber b = ... gibt ein Compilererror. Denn woher soll der Compiler wissen, dass i2 tatsächlich ein B ist? Der Compiler kompiliert nur Zeugs, das eindeutig richtig ist. Allenfalls müsste da ein Cast hin. b = (B)i2; (was aber später Probleme gibt...)

Code:
1e     i2 = new C();    c = (C)i2;

c = (C)i2; ist ein cast, und funktioniert auch (denn i2 ist tatsächlich eine Instanc von C)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
J OOP Theoretische Grundlagen Java Basics - Anfänger-Themen 5
P Aufteilung von Code (Theoretische Frage) Java Basics - Anfänger-Themen 29
G Abstrakte Klassen - theoretische Frage Java Basics - Anfänger-Themen 2
H Vererbung theoretische Frage zur Vererbung/Methoden Java Basics - Anfänger-Themen 7
Antoras Ein paar theoretische Fragen Java Basics - Anfänger-Themen 19
B Theoretische Frage zum Programmbau (nun zur Implementierung) Java Basics - Anfänger-Themen 8
Mojtaba1986 Hausaufgabe (Schleifen) Java Basics - Anfänger-Themen 33
H Codeverbesserung, FH-Hausaufgabe | Bruchrechner Java Basics - Anfänger-Themen 5
I Programmierung-Hausaufgabe: Hilfe benötigt Java Basics - Anfänger-Themen 8
G Hausaufgabe mit LinkedList und LinkedListStack verstehen Java Basics - Anfänger-Themen 6
Y Anfänger Hausaufgabe... Swing Java Basics - Anfänger-Themen 6
B Hausaufgabe Berechnung quadratischer Funktion Java Basics - Anfänger-Themen 16
K BubbleSort Hausaufgabe Java Basics - Anfänger-Themen 20
S Hausaufgabe: Java-Programm schreiben zur Berechnung von x und y Java Basics - Anfänger-Themen 9
K Ausgabe problem in einer Hausaufgabe Java Basics - Anfänger-Themen 5
J Hilfe Java Hausaufgabe kommt nicht weiter Java Basics - Anfänger-Themen 5
S hausaufgabe Java Basics - Anfänger-Themen 4
T Problem mit einer Java Hausaufgabe Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben