我正在使用Swing爲我的高中編程類創建一個令人難以置信的原始二十一點遊戲,因此,我所有的資源類都擴展了JPanel。我創建了以下資源類:是否有可能讓一個類擁有多個超類?
- DealerBox
- ClubsBox
- SpadesBox
- HeartsBox
我的問題是,我想創建一個公共整數極少數這樣的,我有
public int DealerTotal, ClubsTotal, SpadesTotal, HeartsTotal;
我想這樣做,我可以跟蹤每個人的價值觀,並確定贏家和輸家。我有一個燈泡熄滅,並認爲使Dealerbox成爲Clubs,Spades和Hearts的超類是解決所有問題的方法,因爲我可以在超類中獲得簡單的代碼,獲得上述整數的值並執行所需的所有檢查。
所以我寫了這爲我的一個子類:
public class ClubsBox extends JPanel, DealerBox implements Runnable
{
//fun code
}
現在的問題是,我不斷收到錯誤。我認爲它與將ClubsBox列爲JPanel和DealerBox的子類有關。所以我stackoverflowed我的問題,並找到一個答案,說一個不能有一個類有2個超類。對類似問題的另一個答案是,一個可以有一個類有兩個超類。
現在我們來回答主要問題:是否有可能擁有一個擁有兩個超類的類?如果是這樣,我該如何編碼?如果沒有,是否有解決方法?
編輯:2014年4月21日,後原帖
我有一個新的問題44分。我使用了大家所建議的方法,即讓DealerBox擴展JPanel,然後讓其他所有擴展DealerBox。我的GUI從這個去:
這樣:
底部一個顯然是令人難以置信搞砸了。不知何故,來自其他地區的標籤最終被複制,而東西混雜在一起。如果你需要代碼讓我知道,但我需要認真的幫助解決這個問題。
請記住繼承樹是這個樣子:
你可以有'A擴展B',然後'B擴展C',但不是你寫它的方式。 – AntonH
Java僅支持單個類繼承,但您可以有零個或多個實現的接口。請參見[Oracle Java繼承教程](http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html) –
由於使用類層次結構可能會發生的複雜性,因此Java不包含多重繼承使用多重繼承(請參閱[爲什麼在Java中沒有多重繼承](http://stackoverflow.com/questions/2515477/why-there-is-no-multiple-inheritance-in-java-but-implementing-multiple- interfac))。我也想指出,繼承可以被過度使用,並且通常組合優於繼承。 –