G
Gäschtle
Gast
Hallo!
Ich würde gerne verschiedenartige Objekte in einem Array verwalten. Der Objetktyp an jeder Stelle im Array wird zur Laufzeit gesetzt. Vereinfacht soll es nur Objekte der KlasseA und KlasseB geben.
Da ich nicht wusste ob und wie das geht, habe ich vorerst folgende abstrahierte Lösung:
Allerdings möchte ich natürlich nicht in allen 3 Klassen immer alle Methoden definieren, die vielleicht nur von einer der beiden abgeleiteten Klassen gebraucht wird.
Stattdessen wäre eine Möglichkeit wie
einarray[3].MethodeA() praktisch.
Dafür müsste ich natürlich herausfinden, von welchem Typ das Element ist.
Gibt es direkt eine Möglichkeit, herauszufinden aus welcher Klasse ein Objekt gebaut wurde? Ansonsten könnte ich natürlich in KlasseA und KlasseB eine Methode einbauen, die den Wert zurückgibt.
Bliebe der unschöne Missstand, dass ich eine abstrakte Oberklasse brauche und alle Methoden mehrfach implementieren muss um die zu verwalten. Eine Aufteilung in 2 Arrays ist keine Lösung!
Ich würde gerne verschiedenartige Objekte in einem Array verwalten. Der Objetktyp an jeder Stelle im Array wird zur Laufzeit gesetzt. Vereinfacht soll es nur Objekte der KlasseA und KlasseB geben.
Da ich nicht wusste ob und wie das geht, habe ich vorerst folgende abstrahierte Lösung:
Code:
public abstract class Grundklasse {
public abstract void MethodeA();
public abstract void MethodeB();
}
public class KlasseA extends Grundklasse {
public void MethodeA() {
...
}
public void MethodeB() { }
}
public class KlasseB extends Grundklasse {
public void MethodeB() {
...
}
public void MethodeA() { }
}
Grundklasse[] einarray;
Allerdings möchte ich natürlich nicht in allen 3 Klassen immer alle Methoden definieren, die vielleicht nur von einer der beiden abgeleiteten Klassen gebraucht wird.
Stattdessen wäre eine Möglichkeit wie
einarray[3].MethodeA() praktisch.
Dafür müsste ich natürlich herausfinden, von welchem Typ das Element ist.
Gibt es direkt eine Möglichkeit, herauszufinden aus welcher Klasse ein Objekt gebaut wurde? Ansonsten könnte ich natürlich in KlasseA und KlasseB eine Methode einbauen, die den Wert zurückgibt.
Bliebe der unschöne Missstand, dass ich eine abstrakte Oberklasse brauche und alle Methoden mehrfach implementieren muss um die zu verwalten. Eine Aufteilung in 2 Arrays ist keine Lösung!