私はCay HorstmannのJava For Everyoneを使っています。型テストを使わないでdoTheTaskを宣言しますか?
私はそれを言うときに少し混乱しています:
タイプのテストを使用しないでください
これが変化する動作を実装するために、特定のタイプのテストのためのinstanceof
演算子を使用してについてです
各クラスは次のようになります(本から直接取ったもの):
if (q instanceof ChoiceQuestions) //Don't do this
{
//Do the task the ChoiceQuestion way
}
else if (q instanceof Question)
{
//Do the task Question way
}
明らかに、これは0のような新しいクラスが追加されました。タイプテストを行うプログラムのすべての部分を修正し、別のケースを追加する必要があります。
プログラムにクラスNumericQuestion
を追加することをお勧めします。タイプテストではなく、多態性を使用しているので、変更する必要はありません。 クラスの階層でタイプテープを使用しようとするときは、代わりに多態性を再考して使用してください。メソッドdoTheTask
をスーパークラスに宣言し、サブクラスでオーバーライドしてq.doTheTask()
を呼び出してください。
最後の段落は上記のものです。誰かが私にそれを意味するものの例を靴で磨くことができますか? (私は視覚的な学習者の一種です)。私たちは実際に氷点下試験を使わずにこれをどうやって行うのですか?
これは基本的な多形性です。オブジェクト指向プログラミングの背後にある2-3の主な原則の1つです。あなたは、多形性に関するいくつかの良い記事を見つけてそれらを勉強し、次にあなたの脳にその概念を得るためにそれらを実験するためのいくつかの "おもちゃ"プログラムを行う必要があります。 –