微妙な問題に対処する明確かつ適切な方法を探しています。テクニカルなはい、私は単にそれを無視することができますが、それはポイントではありません。継承によるメソッドパラメータの変更
私はNode型のオブジェクトを利用するBinaryTreeクラスを持っています。 BinaryTreeクラスには、バイナリツリーのルールに従って新しいノードを追加するaddNode(Node n)メソッドがあります。
今、RedBlackNode型のオブジェクトを使用するRedBlackTreeクラスを作成します。 )、BinaryTreeから継承します。私はaddNodeメソッドをそのままにしてはいけません。通常のノードをRedBlackTreeに追加することができ、エラーが発生するからです。私はこのようなメソッドをオーバーロードすることができます:
class RedBlackTree extends BinaryTree
{
public void addNode(RedBlackNode n)
{
...
}
}
が、その後、他の方法がまだ公開され、理想的には、それはすべきではありません。 私はこのようなメソッドをオーバーライドすることができます:
が、その後方法はまだパラメータとして、通常のノードをとり、理想的にはそれだけで(彼はメソッドを使用しようとしたとき、それは他の誰かを混乱させる可能性)RedBlackNodeを受け入れる必要があります。
私が望むのは、パラメータタイプがNodeからRedBlackNodeに変更されるようにaddNodeメソッドを継承することです。それ、どうやったら出来るの?それも可能ですか?それとも私の側の概念上の問題ですか?
単にジェネリックを使用するのはなぜですか?私はこのような状況は、彼らが言語に追加されたものだと考えました。 –
かなり正確に: 'class BinaryTree' 'クラスRedBlackTreeはBinaryTree 'を継承します。 –
Ironcache