P
Polidoli
Gast
Hi,
hab nen kleines Verständnisproblem zur Polymorphie. Ich hab hier mal nen Pseudeocode gemacht (ist hoffentlich nicht zu lang) wo ich jetzt erwarten würde, dass die addiere() Funktion meiner abgeleiteten Klasse aufgerufen werden müsste. In meinem konkreten Programm wird jedoch immer die Basisklasse aufgerufen, was muss ich machen damit ich mit den Objekten der Basisklasse arbeiten kann, obwohl sich darin Objekt von abgeleiteten klassen befinden?
hab nen kleines Verständnisproblem zur Polymorphie. Ich hab hier mal nen Pseudeocode gemacht (ist hoffentlich nicht zu lang) wo ich jetzt erwarten würde, dass die addiere() Funktion meiner abgeleiteten Klasse aufgerufen werden müsste. In meinem konkreten Programm wird jedoch immer die Basisklasse aufgerufen, was muss ich machen damit ich mit den Objekten der Basisklasse arbeiten kann, obwohl sich darin Objekt von abgeleiteten klassen befinden?
Java:
class Basis {
int a;
int b;
Basis(int a, int b) {this.a=a;this.b=b;}
public int addiere() {return a+b;}
}
class Erweitert extends Basis {
int c;
Erweitert(int a, int b, int c) {
super(a, b);
this.c = c;
}
public int addiere() {return super.addiere()+c;} //diese soll aufgeufen werden
}
class ContainerKlasse {
Basis [] array=null;
ContainerKlasse(){
Basis [] array = new Basis[10];
}
public void add(Basis b) {...} //Füge basis objekte ins array ein
public int addiereAlle() { //Addiere alles auf
int r=0;
for each {
r += array[].addiere(); //eig. sollte hier addiere() von "Erweitert" aufgerufen werden, wirds aber leider nicht
}
return r;
}
}
class MeineMain() {
public void int main() {
Erweitert a(1,2,3);
Erweitert b(4,5,6);
ContainerKlasse ck = new ContainerKlasse();
ck.add(a); ck.add(b);
ck.addiereAlle();
}
}
Zuletzt bearbeitet von einem Moderator: