# Abstrakte Klasse soll Methode aus Unterklasse aufrufen



## conehead (3. Jul 2011)

Hi.
Ich habe gerade ein kleines Problem.
Ich schreibe einen Simulator, für den man Jade-Agenten programmieren soll/kann.
Die Agenten sollen ein paar vorgefertigte Funktionen bereitgestellt bekommen.
Soweit funktioniert es auch schon sehr gut, nur wollte ich gerade der Sauberheit wegen eine abstrakte Klasse erstellen, in der die ganzen vorgefertigten Funktionen stehen.

Die Unterklassen brauchen lediglich die Funktionen step() und recalcStep() zu implementieren.
In der abstrakten Klasse ist eine Funktion, die bestimmte Ereigniss abfängt und dann soll sie die Funktion step() der Unterklasse ausführen.

Nur bekomme ich dort immer einen Fehler.
Was mache ich falsch?
Oder geht das möglicherweise so garnicht?

Hoffe ihr könnt mir (mal wieder helfen) 

MfG

Conehead


----------



## Volvagia (3. Jul 2011)

Welchen Fehler? NullPointerException? IOException? OutOfMemoryError? BlueScreen? Stromausfall? Weltuntergang?


----------



## conehead (3. Jul 2011)

D'oh. Mein Fehler.
Ja ist eine Nullpointer.

Aber habe das Problem schon gelöst.
Durch das "aussortieren" ging wirklich nur eine Variable verloren.

Ich hab erst vermutet, dass die Oberklasse keine Funktionen der Unterklasse ausführen kann.

Trotzdem Danke


----------



## ralfz (13. Jul 2011)

Ähm,

es geht hier um Vererbung und "dynamische Methodenbindung". 

Das bedeutet, dass die Unterklasse zunächst versucht die Methode auszuführen. Hat sie diese nicht, wird in den Oberklassen nachgeschaut.

Also eine Oberklasse kann "technisch" keine Methode der Unterklasse aufrufen...

Hast du :

```
class A{
 doA(){}
}

class B extends A{
 doB(){}
}
```

mit:

```
A a= new B();
// dann kannst du auch nur:
a.doA();
// aber:
B b= new B();
b.doA(); // Aufruf von doA() in A; es sei denn es ist überschrieben
b.doB(); // Aufruf von doB() in B
```

Gruß
Ralf


----------

