Auswahl Aktion im Forum Suche Kontakt Für Mitglieder Mathematisch für Anfänger Wer ist Online | |
| Autor |
Java Methoden aus anderer Klasse |
|
Fontana
Aktiv  Dabei seit: 15.11.2008 Mitteilungen: 236
Aus:
 |     Themenstart: 2012-07-13 13:01
|
Hallo zusammen,
ich versuche eine Methode auf eine von mir erstellte Klasse anzuwenden, die Methode funktioniert aber nur mit bestimmten vordefinierten Klassen. Mein Pseudo-Minimalbeispiel zur Verdeutlichung (Anm: es ist nicht lauffähig):
Die Hauptklasse:Java public class Model { public static void main (String[] args ) { Space world = new Space(1, 1); } }
|
Java public class Agent { private Space world; private Object2DGrid grid; private Vector myNeighborhood ; public void step(){ myNeighborhood = grid.getMooreNeighbors(newX, newY, 2, 2, false);// dies funktioniert, weil das Objekt 'grid' vom Typ Objekt2DGrid ist. myNeighborhood = world.getVonNeumannNeighbors(newX, newY, 2, 2, false);// diese Zeile funktioniert nicht, weil das Objekt 'world' (aus der Klasse 'Space') nicht über die Methode 'getvonNeumannNeighbors' verfügt. } }
|
Java public class Space { //mein Konstruktor für die Klasse public Space(int xSize, int ySize){ jobSpace = new Object2DGrid(xSize, ySize); agentSpace = new Object2DGrid(xSize, ySize); firmSpace = new Object2DGrid(xSize, ySize); for(int i = 0; i < xSize; i++){ for(int j = 0; j < ySize; j++){ jobSpace. putObjectAt(i,j, new Integer(0)); } } } }
|
Java public class Firm { int ID; int reqSkills; public Firm (int i, int reqSkills){ ID = i; }
| Meine Konstruktor für 'Space' besteht aus den benötigten Object2DGrids,
gibt es daher vielleicht eine Möglichkeit, die Methode trotzdem anzuwenden, obwohl sie nur auf Objekte der Art Object2DGrid anwendbar ist (also indirekt quasi)? Kann man sie vielleicht extrahieren und per Copy and Pace in meine Klasse Space einfügen?
Vielen Dank im Voraus für eure Hilfe.
Fontana
[ Nachricht wurde editiert von Fontana am 13.07.2012 13:08:55 ]
|
Profil
Quote
Link |
Skrodde
Aktiv  Dabei seit: 22.12.2008 Mitteilungen: 114
Aus: Gelsenkirchen
 |     Beitrag No.1, eingetragen 2012-07-13 13:28
|
Hallo Fontana,
Wenn die Methode mit deiner Klasse Space nicht funktioniert, sondern nur mit Feldern deiner Klasse, dann gib doch Space eine Methode mit, die dann wiederum nur die Methode mit einem seiner Felder aufruft, für welches die ursprüngliche Methode definiert ist.
|
Profil
Quote
Link |
Fontana
Aktiv  Dabei seit: 15.11.2008 Mitteilungen: 236
Aus:
 |     Beitrag No.2, vom Themenstarter, eingetragen 2012-07-13 14:33
|
Klasse Idee, daran habe ich gar nicht gedacht, hat direkt funktioniert.
Ich habe alternativ dazu auch mal probiert, eine get Methode in die 'Space' Klasse einzufügen, die die Felder der Klasse "returned". Auch das hat geklappt und müsste ja eigentlich das identische Ergebnis liefern.
Vielen Dank für die schnelle Hilfe Skrodde!!
|
Profil
Quote
Link |
Fontana
Aktiv  Dabei seit: 15.11.2008 Mitteilungen: 236
Aus:
 |     Beitrag No.3, vom Themenstarter, eingetragen 2012-07-13 14:44
|
Habe beide Varianten gerade mit System.out.print überprüft und sie liefern, tatsächlich das gleiche Ergebnis, vielen Dank noch einmal.
|
Profil
Quote
Link |
|