T
theomega
Gast
Hallo Leute,
hab da so ein Problem:
Sinn der Sache ist folgendes: SmallClass speichert bestimmte Daten (in dem Fall einen integer-Wert). Big-Class soll zusätzlich dazu noch weitere Werte speichern (hier: String). Es gibt jetzt für beide eine Methode combine. Diese soll zwei Klassen kombinieren und zwar die Werte zusammenzählen. Leider ist mir unklar wie man das in der BigClass realisiert. Der Type-Cast schlägt so natürlich fehl, weil ich einen Upcast versuche der so ja nicht geht. Wie löst man sowas richtig? Ich könnte natürlich einfach den Code aus der Smallclass kopieren, aber das will ich vermeiden.
Danke
TO
hab da so ein Problem:
Code:
public class SmallClass {
int intvalue;
public void setIntValue(int i) {
this.intvalue = i;
}
public int getIntValue() {
return(intvalue);
}
public SmallClass combine(SmallClass sec) {
SmallClass re = new SmallClass();
re.setIntValue(this.getIntValue()+sec.getIntValue());
return(re);
}
}
public class BigClass extends SmallClass {
String strvalue;
public String getStringValue() {
return(strvalue);
}
public void setStringValue(String s) {
this.strvalue = s;
}
public BigClass combine(BigClass sec) {
BigClass re = (BigClass)super.combine(sec);
re.setStringValue(this.getStringValue()+" "+sec.getStringValue());
return(re);
}
}
public class UpcastTest {
public static void main(String[] args) {
//Das funktioniert:
SmallClass seins = new SmallClass();
SmallClass szwei = new SmallClass();
seins.setIntValue(10);
szwei.setIntValue(5);
SmallClass sresult = seins.combine(szwei);
System.out.println("Kombiniert ergibt das: "+sresult.getIntValue());
//Und das funktioniert nicht:
BigClass beins = new BigClass();
BigClass bzwei = new BigClass();
beins.setIntValue(10);
beins.setStringValue("Eins");
bzwei.setIntValue(5);
bzwei.setStringValue("Zwei");
BigClass bresult = beins.combine(bzwei);
System.out.println("Kombiniert ergibt das: "+bresult.getIntValue()+"/"+bresult.getStringValue());
}
}
Sinn der Sache ist folgendes: SmallClass speichert bestimmte Daten (in dem Fall einen integer-Wert). Big-Class soll zusätzlich dazu noch weitere Werte speichern (hier: String). Es gibt jetzt für beide eine Methode combine. Diese soll zwei Klassen kombinieren und zwar die Werte zusammenzählen. Leider ist mir unklar wie man das in der BigClass realisiert. Der Type-Cast schlägt so natürlich fehl, weil ich einen Upcast versuche der so ja nicht geht. Wie löst man sowas richtig? Ich könnte natürlich einfach den Code aus der Smallclass kopieren, aber das will ich vermeiden.
Danke
TO