私はチェスゲームを作っていて、抽象クラス "Piece"にPawnやRookのような具体的な実装の新しいインスタンスを返すメソッドを持たせる方法があるかどうかを判断しようとしています。例えば抽象クラスで静的ファクトリメソッドを作成できますか?
:代わりに、私はそれがメソッドを呼び出したクラスがあるものは何でも返したいワンピースを返すのを除き
static public Piece newNorthPiece(){
return new Piece(true);
}
。だから私がPawn.newNorthPiece()を呼び出すと、それは新しいPawn(true)を私に返したいと思う。 そして、これを行うには、Pieceクラスを拡張するすべてのクラスに対して新しいファクトリメソッドを記述する必要はありません。
具体的な実装を呼び出す必要があります。だから 'KnightPiece'、' PawnPiece'などです。あなたのファクトリメソッドはどの実装を呼び出すべきかを決めるべきです。 'Pawn'はまだ定義されていますか? – Obicere
これは不可能であると私はかなり確信しています。スーパークラスはそのサブクラスを認識しません。実際の質問は、すべてのクラスに対して新しいファクトリメソッドを作成したくない理由です。 – Gendarme
Obicereあなたはそれが何を意味しているのかよく分かりませんが、私はすでにすべての部分についてクラスを作っています。 –