(Greenfoot ) Als Actor auf Welt Methode zugreifen?
Ist es möglich eine Methode welche in einer World Subklasse steht, in einer Subklasse vom Actor aufzurufen/ auszuführen? Wenn ja wie geht das? :D
Vielen Dank
1 Antwort
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer, programmieren, Java
Das ist nur möglich, wenn der Subactor über eine Instanz der Subworld verfügt. Diese könntest du bspw. über den Konstruktor überreichen, wenn eine Instanz des Subactors erzeugt wird.
class SubActor extends Actor {
World world;
public SubActor(World world) {
this.world = world;
}
}
class SubWorld extends World {
public void doSomething() {
}
}
// creation:
SubWorld world = new SubWorld();
SubActor actor = new SubActor(world);
Eine weitere Übergabemöglichkeit wäre über eine Methode:
class SubActor extends Actor {
World world;
public void setWorld(World world) {
this.world = world;
}
}
// creation:
SubWorld world = new SubWorld();
SubActor actor = new SubActor();
// ...
// later:
actor.setWorld(world);
Jedoch solltest du dann, bevor du das Attribut world benutzt, stets einen Nullcheck machen, falls es noch nicht definiert sein sollte.
if (world != null) {
world.doSomething();
}
Prinzipiell reicht vielleicht auch nur eine temporäre Übergabe:
class SubActor extends Actor {
void doSomethingWhatActorsLikesToDo(World world) {
world.doSomething();
}
}
// creation:
SubActor actor = new SubActor();
SubWorld world = new SubWorld();
// later:
actor.doSomethingWhatActorsLikesToDo(world);
All dies setzt voraus, dass du eine Instanzmethode aufrufen möchtest, die nach außen hin sichtbar ist.