簡體   English   中英

擴展類,隱式超級構造函數未定義錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM