我正在製作一款象棋遊戲,並試圖弄清楚是否有辦法讓我的抽象類「Piece」有一種方法可以返回像Pawn或Rook這樣的具體實現的新實例。我可以在抽象類中創建靜態工廠方法嗎?
例如:
static public Piece newNorthPiece(){
return new Piece(true);
}
除,而不是返回一塊我希望它返回任何調用該方法的類。所以如果我打電話給Pawn.newNorthPiece()我希望它返回給我一個新的Pawn(true)。 我想這樣做,而不必爲擴展Piece類的每個類都寫一個新的工廠方法。
您需要調用具體的實現。因此無論是'KnightPiece','PawnPiece'等。您的工廠方法應該確定要調用哪個實現。你有沒有定義Pawn? – Obicere
我相當肯定這是不可能的。超類不知道它的子類。真正的問題是爲什麼你不想爲每個班級寫一個新的工廠方法。 – Gendarme
Obicere我不確定你的意思,但是我已經爲所有作品製作了課程。 –