これはばかげた質問のように思えますが、初心者から何度もこの質問を聞いたことがあります。もちろん、あなたはその例で正しいです。しかし、現実の世界では、すべてのプログラムを 1 ページに書いているわけではありません!! したがって、知っているものと知らないものに分割できる複雑なロジックがある場合に役立ちます。あなたが知っていることをコーディングして、他の人があなたが知らないことを埋められるようにフックを与えることができますが、他の人は知っていることを知っています.
旅行代理店の例を考えてみましょう。彼らは、バス会社や鉄道会社がどのようにスケジュールを組んでサービスを運営しているかを知りません。しかし、彼らはさまざまなタイプのオペレーターから最良の取引を得る方法を知っています (ただし、彼らはすべてバス/電車のオペレーターであることを忘れないでください)。だから、彼らはちょうど契約が必要です(基本クラスに相当)各バス/電車のオペレーターから特定の日付のスケジュールを取得する方法を知っています(つまり、何々の目的地の何々の日付の可能なスケジュールが必要です)。すべての事業者がこの契約を順守している限り、旅行代理店は最善を尽くすことができます。つまり、これらすべての可能なスケジュールを取得し、クライアントに最適なものを選択します。最良のものを選ぶのは旅行代理店の仕事です。バス/電車の運行者が内部でスケジュール/コストなどを維持する方法 (派生クラスの実装) を気にする必要はありません。旅行代理店はバス/電車のオペレーターとの契約のみを扱っているため、後で新しいバス/電車のオペレーターが来ても、旅行代理店のロジックを変更する必要はありません (d1.test() と dr2 を使用する場合、あなたの質問を考慮してください) .test() 新しい DerivedClass3 が追加された場合、
この種のパターンは、人生のあらゆる歩みで見られます。あなたは外食の契約を知っています。メニューを見て、食べ物を注文し、支払いをして戻ってきます(基本クラスの方法)。料理の仕方、メニューの作り方などを知る必要はありません。
つまり、ポリモーフィズムは、依存する実装の内部の詳細を知らなくても、プログラムの一部を独立して実装できる状況を実装するのに役立ちますが、インターフェースを知るだけです。
したがって、あなたの例では、どの派生クラスがあるかを気にせずに、基本クラスを使用するだけで複雑なアルゴリズムまたはロジックを実装できます。アルゴリズムのユーザーは、さまざまなタイプの派生クラスのさまざまなインスタンスを追加できますが、それでもアルゴリズムは機能します。
お役に立てれば..