[英]Extending class, implicit super constructor is undefined error
我正在使用Java。 我有2節課
class Card
class Deck extends Card
我收到構造函數錯誤。
我必須為大學制作二十一點游戲,並且必須擴展Deck班級。
我該怎么做才能解決這個問題?
class Card
{
int rank, suit;
String[] suits = { "hearts", "spades", "diamonds", "clubs" };
String[] ranks = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" };
Card(int suit, int rank)
{
this.rank=rank;
this.suit=suit;
}
String toString()
{
return ranks[rank] + " of " + suits[suit];
}
int getRank() {
return rank;
}
int getSuit() {
return suit;
}
}
class Deck extends Card{
ArrayList <Card> cards;
int numberdeck;
Deck()
{
cards = new ArrayList<Card>();
for (int a=0; a<=3; a++)
{
for (int b=0; b<=12; b++)
{
cards.add( new Card(a,b) );
}
}
}
Card drawFromDeck()
{
Random generator = new Random();
int index= generator.nextInt( cards.size() );
return cards.remove(index);
}
int getTotalCards()
{
return cards.size();
}
}
子類中的構造函數應該調用超類中的相應構造函數,但是,在您的代碼中找不到這樣的構造函數。
添加對超類不帶任何參數的構造函數,或者使子類中的構造函數調用超類中的構造函數。
您可以使用super(0, 0);
調用超類的構造函數super(0, 0);
在子類的構造函數的開頭。
Deck
真的不應該擴展Card
。 子分類編碼一個is-a關系。 獅子是動物,所以Lion extends Animal
。 您可以說子類化是不合適的,因為在整個卡片組中,getRank()和getSuit()方法毫無意義。
一副紙牌不是紙牌。 副牌包含其他卡牌。 包含關系已經由ArrayList <Card> cards
數組表示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.