使用类作为变量标识符?

时间:2013-11-05 20:25:39

标签: java class methods instance-variables class-variables

我正在制作一些简单的课程来计算垄断游戏中的一些东西。

我的第一堂课(BoardSquare)有方法来获取和设置广场上的玩家广场名称和房屋数量,而我有另一种方法根据广场上有多少房屋用if语句计算租金。

我的第二堂课(House)有一个方法,可以在另一个if语句中获得该房产的新房成本,然后设置一套方法来设定房价。

我的目标是在boardsquare类中使用House类。我的意思是代替实例变量

    int houses;

要保持广场上的房屋数量我使用House类型的变量。换句话说,不是在广场上有许多房屋,而是拥有0或1个房屋。

我知道我想做什么我只是不知道该怎么做。

所以我有一个实例变量         房屋; 我的getHouses方法读取

    public House getHouses(this is where i had int h(from the constructor) but I dont know what to put here now)
    {
    Whatever I need to put here to access the class House
    }

希望你能理解我想要完成的事情。我将非常感谢您提供的任何提示。

2 个答案:

答案 0 :(得分:1)

在BoardSquare类中添加一个实例变量,如下所示:

LinkedList<House> houses;

如果只有0或1个房子,你可以有一个类型为House的实例变量,以及一个类型为boolean的实例变量,名为hasHouses。

答案 1 :(得分:1)

您需要Collection<House>

除非您需要链接列表的特定行为,否则请勿使用LinkedList<House>。这也适用于ArrayList。您可能希望将其中任何一个作为实现,但可以使用最抽象的集合。

  • List是房屋的顺序很重要
  • Set如果您只想强制执行每种类型的房屋(可能不适用)

所以:

Collection<House> houses = new ArrayList<House>();

public Collection<House> getHouses() {
    return houses;
}

public void addHouse(House newHouse) {
    houses.add(newHouse);
}

我选择了ArrayList实现,因为将新元素添加到列表末尾是有效的。 LinkedList也是如此,但LinkedList增加了额外的开销,使得将条目插入List变得高效。有关详细信息,请参阅文档。