Abstrakte Methoden und Ableitungen/Override

martinpriebe

Erfahrenes Mitglied
Hallo,

ich habe 3 Klassen

Eine Basisklasse und 2 Klassen die davon ableiten.

Nun möchte ich eine Methode erstellen die von beiden Ableitungen überschrieben wird.
Nun möchte ich ein Objekt erstellen. Ich weiß zwar das es auf jeden Fall vom Typ Basisklasse ist aber nicht genau welche Ableitung.

Ich versuche es mal darzustellen.

public abstract class Basisklasse
{
protected abstract Basisklasse Foo(byte[] b);
}

public class Ableitung1 : Basisklasse
{
protected override Basisklasse Foo(byte[] b)
{
Ableitung1 ab1 = new Ableitung1 ();
ab1.wert = 5;
return ab1;
}
}

public class Ableitung2 : Basisklasse
{
..
protected override Basisklasse Foo(byte[] b)
{
Ableitung2 ab2 = new Ableitung2 ();
ab2.wert = 5;
return ab2;
}
}

nun möchte ich ein Objekt erzeugen aber ich weiß nicht welches weil ich das byte[] nicht auswerten will.
das soll ja die basisklasse machen.

ich möchte Basisklasse und die abstrakte Methode aufrufen.
Dann soll er in die entsprechende Klasse rein.

Basisklasse class1 = Basisklasse.Foo();

if(class1 is Ableitung1)
..


Alles etwas schematisch.
Nur wie stelle ich das genau an?
Wie kann meine Basiklasse entscheiden welche Methode bzw welche Ableitung sie nimmt?

Oder ist meine Idee schon im Ansatz falsch ?


Was ich nicht möchte ist eben ein
Ableitung1 ab1 = new Ableitung1();
Ableitung2 ab2 = new Ableitung2();
usw.


Sorry wenn ich mich kompliziert ausdrücke.

Danke im vorraus
Martin
 
Okay, ich hab echt keine Ahnung ob ich Dein Problem richtig verstanden habe :)

Dazu mal eine Frage: Die Methode Foo der Basisklasse soll also irgendetwas mit dem byte-Array tun und die spezialisierte Klasse (also Ableitung1 oder 2) soll dann weiter damit verfahren. Jetzt kommt es halt noch auf das Aussehen vom byte-Array an, ob die Foo-Methode von Ableitung1 oder 2 benutzt werden muss?
IMHO kannst Du soetwas nicht mit Objektstrukturen darstellen. Das Objekt muss ja schon existieren wenn Du die Methode benutzen möchtest.
Das Einzige was mir dazu jetzt einfiele wäre eine statische Methode in der Basisklasse, die das byte-Array zuerst analysiert, dann das passende Objekt erzeugt und dort die Foo-Methode aufruft.

Vielleicht hab ich Deine ganze Problematik aber auch nicht richtig erfasst. Bin mir da z.zt. nicht ganz so sicher ;)
 
Zurück