Funktionen einer Klasse überschreiben

  • Sagen wir mal ich habe die Klasse

    Code
    class Foo extends AsyncTask<...>


    Wenn ich jetzt in einer anderen Activity eine Instanz der Klasse erstelle:

    Code
    Foo f = new Foo();


    Wie überschreibe ich dann die Methode onPostExecute der f Instanz!?

  • 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 aussieht


    Java
    if(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!