Hi,
Ich schreibe am Montag eine Klausur in Java und hab noch Probleme mit der Vererbung
Es kommt mit hoher Wahrscheinlichkeit solch eine Aufgabe
Gegeben sei die folegende Klassenhierarchie:
Untersuchen Sie die folgenden Methoden einer Testklasse auf ihre Korrektheit. Im Fehlerfalle erläutern Sie
kurz den Fehler. Für alle richtigen Anweisungen geben Sie bitte jeweils an, was ausgegeben wird.
Was mir Problem bei der Aufgabe macht, ist, dass ich nicht immer genau weis, ob das erben funktioniert(und das ist ja wohl die Kernaufgabe^^)
Gibt es vielleicht so eine Art Liste, was beim Vererben funktioniert und was nicht, so etwas alá "Unterklasse erbt von Oberklasse, aber umgekeht ist das nicht möglich"...
Viele Grüße
Ich schreibe am Montag eine Klausur in Java und hab noch Probleme mit der Vererbung
Es kommt mit hoher Wahrscheinlichkeit solch eine Aufgabe
Gegeben sei die folegende Klassenhierarchie:
Java:
public abstract class Top {
public Top(int a) {
System. out .println("Top: Konstruktor " + a);
this.a = a;
}
public abstract void compute();
public void print() {
System. out .println("Top.print() a=" + a);
}
public void f(Top arg){
System. out .println("Top.f() arg = " + arg);
}
public String toString() {
return "Top: a = " + a;
}
protected int a;
}
public class Middle extends Top {
public Middle(int b) {
super(b/2);
this.b = b;
System. out .println("Middle: Konstruktor " + b);
}
public Middle (Middle arg) {
this(arg.b);
}
public void compute() {
System. out .println("Middle.compute() " + (a + b));
}
public void method() {
System. out .println("Middle.method()")
;
}
public String toString() {
return "Middle: b = " + b;
}
protected int b;
}
public class Bottom extends Middle {
public Bottom(double c) {
super((int)(c/2));
System. out .println("Bottom: Konstruktor " + c);
this.c =
c;
}
public void compute() {
System. out .println("Bottom.compute() " + (a + b +
c));
}
public void method() {
System. out .println("Bottom.meth
od()");
}
public void print() {
System. out .println("Bottom.print() a="
+ a + ", b=" + b + ",
c=" + c);
}
public String toString() {
return "Bottom: c = " + c;
}
private double c;
}
Untersuchen Sie die folgenden Methoden einer Testklasse auf ihre Korrektheit. Im Fehlerfalle erläutern Sie
kurz den Fehler. Für alle richtigen Anweisungen geben Sie bitte jeweils an, was ausgegeben wird.
Java:
(a) public void a() {
Top t1 = new Bottom(9.5);
t1.compute();
t1.print();
t1.method();
Bottom b1 = (Bottom)t1;
b1.compute();
b1.print();
b1.method();
}
(b) public void b() {
Bottom b1 = new Bottom(7.5);
b1.compute();
b1.print();
Middle m1 = new Middle(b1);
m1.compute();
m1.print();
m1.f(b1);
}
(c) public void c() {
Top t1 = new Top(10);
t1.compute();
t1.print();
t1.f(t1);
}
(d) public void d() {
Middle m1 = new Middle(5);
Top t1 = m1;
t1.compute();
t1.print();
t1.f(m1);
}
Was mir Problem bei der Aufgabe macht, ist, dass ich nicht immer genau weis, ob das erben funktioniert(und das ist ja wohl die Kernaufgabe^^)
Gibt es vielleicht so eine Art Liste, was beim Vererben funktioniert und was nicht, so etwas alá "Unterklasse erbt von Oberklasse, aber umgekeht ist das nicht möglich"...
Viele Grüße