2012-12-30 15 views
5

Niedawno odebrałem Javę i wystąpił problem. Mam kilka plików z różnych klas, ale nie mogę dowiedzieć się, w jaki sposób mogę uzyskać dostęp do obiektów innych klas w plikach innych niż te, które zostały zgłoszone w. Na przykład:Uzyskiwanie dostępu do obiektów innych klas

player.java: 
public class Player 
{ 
    public static void main(String[] args) { 
     Player player = new Player(); 
    } 
    public int getLocation() 
    { 
     return 2; 
    } 
} 

monster.java: 
public class Monster 
{ 
    public void attackPlayer() 
    { 
     player.getLocation(); 
    } 
} 

nie jestem pewien w jaki sposób mogę skutecznie uzyskać dostęp do tych obiektów innych klas z innych plików i klas? Wiem, że mogłem uczynić obiekty statycznymi, a następnie uzyskać do nich dostęp jako zmienne w klasie, w której zostały wykonane, ale wydaje się to raczej sprzeczne z intuicją? Pochodzę z mniej zorientowanego obiektowo tła programistycznego, więc wciąż próbuję zrozumieć styl programowania java.

+0

Zaimportuj je i użyj instancji obiektu, np. Przekazując jeden jako parametr? –

Odpowiedz

8

Pewnie po prostu chcą coś takiego:

player.java: 
public class Player 
{ 
    public static void main(String[] args) { 
     Player player = new Player(); 
     Monster monster = new Monster(); 
     monster.attackPlayer(player); 
    } 
    public int getLocation() 
    { 
     return 2; 
    } 
} 

monster.java: 
public class Monster 
{ 
    public void attackPlayer(Player player) 
    { 
     player.getLocation(); 
    } 
} 

nadzieję, że pomoże/sens!

+0

Dziękujemy! Dokładnie to chciałem zrozumieć. Dzięki. –

1

Dobrym miejscem do rozpoczęcia byłoby przekazanie gracza, którego chcesz zaatakować "kiedy" atakuje potwór.

battle.java

public class Battle { 

    public static void main(String[] args) { 
    Player player = new Player(); 
    Monster monster = new Monster(); 
    monster.attackPlayer(player); 
    } 
} 

player.java:

public class Player 
{ 
    public int getLocation() 
    { 
     return 2; 
    } 
} 

monster.java:

public class Monster 
{ 
    public void attackPlayer(Player player) 
    { 
     player.getLocation(); 
    } 
} 
0

Klasa jest tylko plan dla obiektu.

Można wywołać metody zdefiniowane w klasie gracza na rzeczywistym obiekcie Player, który już instancja tylko - zrobiłeś to w następujący wiersz w metodzie main(String[] args):

Player player = new Player(); 

Jednak Zmienna player jest teraz dostępna tylko do kodowania w zakresie deklaracji - w tym przypadku w dowolnym miejscu po tej linii w metodzie main(String[] args).

To nie jest dostępne poza tym zakresem. Metoda attackPlayer() w klasie Monster zdecydowanie zdecydowanie wykracza poza ten zakres! Gdy odwołujesz się tam do player, kompilator nie ma pojęcia, do czego odnosi się ten token. Musisz podać argument typu Gracz, o nazwie player (lub cokolwiek chcesz, naprawdę), do tej metody, zanim zaczniesz wywoływać metody na nim.

Powiązane problemy