访问其他类的对象

我最近选择了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的编程风格。

你可能只是想要这样的东西:

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

希望有所帮助/有意义!

一个好的开始就是传递你想要攻击的玩家“当”怪物攻击时。

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

类只是对象的蓝图。

您只能在已实例化的实际Player对象上调用Player类中定义的方法 – 您已在main(String[] args)方法的以下行中完成此操作:

 Player player = new Player(); 

但是, player变量现在仅可用于其声明范围内的代码 – 在本例中,在main(String[] args)方法中此行之后的任何位置。

它不在此范围之外。 Monster类中的attackPlayer()方法绝对超出了这个范围! 当你在那里引用player时,编译器不知道该令牌所指的是什么。 在开始调用方法之前,你必须向该方法传入一个类型为Player的参数,名为player (或者你喜欢的任何东西)。