我最近选择了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 :(得分:9)
你可能只是想要这样的东西:
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();
}
}
希望有帮助/有意义!
答案 1 :(得分: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();
}
}
答案 2 :(得分:0)
一个类只是一个对象的蓝图。
您只能在已实例化的实际Player对象上调用Player类中定义的方法 - 您已在main(String[] args)
方法的以下行中完成此操作:
Player player = new Player();
但是player
变量现在只对其声明范围内的代码可用 - 在这种情况下,main(String[] args)
方法中此行之后的任何位置。
在此范围之外无法使用。 Monster类中的attackPlayer()
方法绝对超出了此范围!当你在那里引用player
时,编译器不知道该令牌所指的是什么。在开始调用方法之前,你必须向该方法传入一个类型为Player的参数,名为player
(或你真正喜欢的任何东西)。