访问其他类的对象
我最近选择了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
(或者你喜欢的任何东西)。