【发布时间】:2016-03-06 20:15:35
【问题描述】:
在我下面的班级球员中,我有 2 种方法。在我的主要活动中的方法 playerFight 中,我将名称 fred 和 bill 传递给我的玩家战斗方法。我知道您应该像我一样将参数值传递给实例变量。但是,如果我打印 player1 和 player2 它会达到相同的结果,所以我很困惑为什么我们需要将它们设置为实例变量??
public class GameTime {
public static void main(String[]args){
Players hockeyPlayer=new Players();
hockeyPlayer.simpleMessage();
hockeyPlayer.playersFight("fred", "bill");
}
}
public class Players {
String name;
int number;
public void simpleMessage(){
System.out.println("This is another Class");
}
public void playersFight(String player1,String player2){
name=player1;
name=player2;
System.out.println(player1+" fights "+player2);
}
}
【问题讨论】:
-
我认为您不应该将名称分配给 1 个实例变量,因为您要覆盖第一个分配。实例变量用于保存信息以备后用。在您的程序使用
playersFight完成后,它仍然保持该值 -
哦,那么在需要实例变量的情况下,什么是一个很好的例子?
-
您应该将 Java 对象视为真实的对象或概念,其中实例变量构成对象/概念的状态。你的 Players 类似乎没有代表任何具体的东西。但是您可能会想像一个包含 GameTable 列表的 CasinoRoom,其中每个 GameTable 将有两个 Player,每个 Player 都有一个名称和一个分数。然后,您可以询问每个 GameTable,谁是两个玩家的赢家。您可以向 CasinoRoom 询问得分最高的玩家的姓名。等等。你问对象的所有这些问题都是方法,即来自状态的信息。