Java: szülő, vagy gyökér osztály elérése?
Sziasztok!
Új vagyok Java programozásban. Éppen azzal bajlódok, hogy egy osztályból nem tudom sehogyan sem elérni az őt létrehozó osztály változóit.
A programban a játékos egy űrhajót irányít, aminek vannak védőágyúi. A játékoson kívül ellenséges űrhajók vannak. Amit el szeretnék érni: a védőágyú osztályából el akarom érni az ellenséges hajók listáját (hogy megkereshessem a legközelebbit).
Nagyjából így néznek ki:
public class Player{
public Player(){
turret = new LaserTop(); // ez a védőágyú
}
}
public class LaserTop {
public LaserTop(){
// Innen akarom kiolvasni az ellenséges hajók listáját
}
}
public class EnemyShips{
public EnemyShips(){
Ship enemy[] = new Ship[10];
// Ezt az "enemy" változót akarom kiolvasni
}
}
public class GameScreen(){
public GameScreen(){
player = new Player();
enemyShips = new EnemyShips();
}
}
A változók mind publikusak (csak nem volt kedvem most begépelni ezt).
tehát a felépítés:
gamescreen
-player
--laserTop
-enemyships
--enemy (változó)
hogyan érem el "laserTop"-ból az "enemy" változót?
Jó sokáig kerestem a megoldást, kb 4 perccel azután, hogy kiírtam a kérdést, megtaláltam:
class Creator {
Created created;
public void aMethod() {
created = new Created(this);
}
}
class Created {
Creator myCreator;
public Created(Creator creator) {
myCreator = creator;
}
}





Több probléma is van a kóddal. Értem, hogy kezdő vagy még a Java-ban. Szóval az OO-ságot is még el kell sajátítanod.
Másrészről: Túl sok dolgot különválasztasz, amik egyben lennének jobbak, ill. fordítva. Persze ez nem baj, még, majd később kiforr, ahogy a tudásod bővül.
Minél jobban megérted és többet fogsz tudni, annál jobban mondod majd a régi kódodra, hogy használhatatlan. :)
Harmad részt néz utána ennek:
- Tervezési minták (inkább elméleti)
- Java Interface (inkább gyakorlati)
Negyedrészt:
Az osztály objektumokra tekints pointerként, mivel az alábbi kód output-ja 5.
public class A {
... private int a = 0;
... public static void main(String[] arg) {
... ... A Obj = new A(3);
... ... A.fgv(Obj);
... ... A.fgv(Obj);
... ... System.out.println(Obj.getA());
... }
... public static void fgv(A Obj) {
... ... Obj.aInc();
... }
... public A(int n) {
... ... this.a = n;
... }
... public void aInc() {
... ... this.a++;
... }
... public int getA() {
... ... return this.a;
... }
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!