2012-12-30 11 views
5

私は最近Javaを取り出して問題に遭遇しました。私は、異なるクラスを持つ複数のファイルを持っているが、私は、彼らがで宣言されたもの以外のファイルに他のクラスのオブジェクトにアクセスする方法を見つけ出すことはできませんたとえば:。他のクラスのオブジェクトへのアクセス

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(); 
    } 
} 

私はわかりませんどのように他のクラスのオブジェクトに他のファイルやクラス自体から効果的にアクセスできますか?私は、オブジェクトを静的にしてから、それらを変数として変数にアクセスすることができるのは分かっていますが、それはむしろ直観に反するようです。私はあまりオブジェクト指向プログラミングのバックグラウンドから来て、私はまだJavaのプログラミングのスタイルを理解しようとしています。

+0

オブジェクトをインポートし、パラメータの1つを渡すなど、オブジェクトのインスタンスを使用しますか? –

答えて

8

あなたは、おそらくこのような何か欠けている:

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(); 
    } 
} 

・ホープ/は理にかなっているのに役立ちます!

+0

ありがとう!まさに私が理解しようとしていたものでした。ありがとう。 –

1

開始するには、攻撃するプレイヤーを「いつ」攻撃するのが良いでしょうか。

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

クラスは、オブジェクトのためにだけ設計図です。

あなただけがインスタンス化してきた実際のプレーヤーオブジェクト、上のプレーヤーのクラスで定義されたメソッドを呼び出すことができます - あなたはmain(String[] args)方法で次の行でこれをやった:

Player player = new Player(); 

しかし、 player変数は、宣言のスコープ(この場合は、main(String[] args)メソッドのこの行の後ろの任意の場所)のコードでのみ使用できるようになりました。

この範囲外では利用できません。 MonsterクラスのattackPlayer()メソッドは、このスコープの外にあります。 playerを参照すると、コンパイラはそのトークンが何を参照しているのかを知りません。メソッドの呼び出しを開始する前に、playerという名前の引数(または実際に好きなもの)をそのメソッドに渡す必要があります。

関連する問題