Funktionen einer Klasse überschreiben
-
-
haeh ???
natürlich in deiner Klassendefinition Foo
class Foo extends AsyncTask<...>
{onPostexecute .... ect pp
}
-
Wie sich das anhört verstehst du nicht ganz wie ich das meine, ich kenne das aus .NET so, dass man zb. Events hat und darauf reagieren kann.
Ich habe die Klassen wie oben beschrieben.
Kann ich dann nicht bei der neuen Instanz der Klasse eine andere Abhandlung des onPostExecute angeben?
Oder kann ich das onPostExecute nur einmal in der Mainclass deklarieren und entsprechend benutzen?
Nochmal ein Beispiel wie ich das meine:
Wir haben 3 Instanzen von Foo()
Foo f1 = new Foo();
Foo f2 = new Foo();
Foo f3 = new Foo();Ich möchte allerdings jetzt bei jedem einzelnen onPostExecute dieser Instanzen anderen Anweisungen ausführen.
Muss ich dann jedes mal eine eigene Klasse deklarieren oder kann ich nicht einfach die onPostExecute für jede einzelne Instanz überschreiben?
-
Hallo,
wie so oft gibt es für dein Problem mehrere Lösungen:
1) Verschiedene Foo Klassen
Du schreibst dir also die Klassen Foo1, Foo2 usw. und implementierst das unterschiedliche Verhalten in den jeweiligen Klassen. Diese Lösung ist zwar naheliegend, aber ich würde sie mal als "naiven" Ansatz bezeichnen.2) Eine Foo Klasse mit einer Implementierung von onPostExecute()
Diese Lösung setzt voraus das deine Klasse zur Laufzeit weiß was konkret in den verschiedenen Situationen in onPostExecute() passieren soll. Das bedeutet das deine Implementierung etwa so aussiehtJavaif(situation == 1) tue was in Situation 1 zu tun ist else if(situation == 2) tue was in Situation 2 zu tun ist else tue was sonst zu tun ist
3) Auslagern des unterschiedlichen Verhaltens in separate Klassen
Du gibts im Konstruktor deiner Foo Klasse eine weitere Klasse mit, die das jeweilige Verhalten implementiert. In der onPostExecute() Methode delegierst du dann an die übergebene Klasse. Das ist das sog. Strategie-Muster. Wenn du Tante google befragst wirst du dazu jede Menge Beispiele finden.Ich hoffe das hilft dir weiter.
nachdenklich
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!