如何将构造函数中的实例字段初始化为java中的另一个对象?

时间:2017-11-02 19:38:48

标签: java constructor

我在Java中有两个类:

public class DeckOfCards {
    private ArrayList<Card> deck;
    private int currentCard;

    public DeckOfCards() {
      this.deck = new ArrayList<>();
      this.currentCard = 0; // first Card dealt will be deck[0]
   }
}

public class CardPlayer {
    private enum PLAYER_TYPE {PERSON, COMPUTER};
    private PLAYER_TYPE player;
    private DeckOfCards deck;
    private int currentSum;

    public CardPlayer(int playerType) {
        this.player = PLAYER_TYPE.PERSON;
        this.deck = initializeDeckField();
    }

    private static final DeckOfCards initializeDeckField() {
        DeckOfCards d = new DeckOfCards();
        return d;
    }
}

CardPlayer对象的一个​​字段是DeckOfCards对象。我想知道是否有一些方法可以直接在DeckOfCards构造函数中使用CardPlayer构造函数来初始化deck的{​​{1}}字段。

到目前为止,我找到的唯一解决方案是使用另一个函数来执行此操作。有没有更好的方法或更正确的方法?

1 个答案:

答案 0 :(得分:2)

每个CardPlayer都有DeckOfCards,所以为什么不从牌组继承玩家。

public class CardPlayer extends DeckOfCards

当你实例化一个玩家时,你也会创建他的相关套牌。

public CardPlayer(int playerType) {
    super();
    this.player = PLAYER_TYPE.PERSON;
    this.deck = initializeDeckField();
}