31

ポリモーフィズム、オーバーロード、オーバーライドの概念については、私には同じように思われるため、非常に混乱しています。これらの概念と、それらの違いについて説明してください

とても混乱しているので、きちんと案内してください。

ありがとう

4

2 に答える 2

65

ポリモーフィズムは、オーバーライドすることで実現できます。簡単に言えば、ポリモーフィズムとは、オブジェクトの性質に応じて、オブジェクトがさまざまな動作を提供する(さまざまな実装を使用する)能力を指します。具体的には、クラス階層内での位置によって異なります。

メソッドのオーバーライドとは、スーパークラスまたはインターフェイスで定義されたメソッドがそのサブクラスの1つによって再定義され、スーパークラスが提供する動作を変更/置換することです。実装または別の実装を呼び出すかどうかの決定は、操作が呼び出されたオブジェクトに応じて、実行時に動的に行われます。オーバーライドするとき、メソッドのシグネチャは同じままであることに注意してください。

メソッドのオーバーロードは、ポリモーフィズムとは無関係です。これは、メソッドのさまざまな形式を定義することを指します(通常、さまざまなパラメーター番号またはタイプを受け取ることによって)。それは静的な多型として見ることができます。実装を呼び出すか別の実装を呼び出すかの決定は、コーディング時に行われます。この場合、メソッドのシグネチャを変更する必要があることに注意してください。

演算子のオーバーロードは、ポリモーフィズムに関連する別の概念です。これは、特定の言語に依存する演算子が、そのオペランドのタイプに基づいて異なる動作をする能力を指します(たとえば、 sとの+連結、Stringおよび数値オペランドとの加算を意味する場合があります)。

ウィキペディアの は非常にわかりやすいものです。

次の関連する質問も役立つ場合があります。

于 2012-10-15T11:00:53.653 に答える
7

すぐに、それらは同じではありません。

オーバーロードとは、同じ名前でパラメーターが異なるメソッドを作成することを意味します。

オーバーライドとは、サブクラス内のスーパークラスのメソッドの本体を再定義して、メソッドの動作を変更することを意味します。

ポリモーフィズムは、オーバーライドやオーバーロードなど、その範囲に含まれる幅広い概念です。ウィキペディアのポリモーフィズムの説明は、ポリモーフィズムをよりよく理解するのに役立ちます。特に、サブタイプポリモーフィズム(または包含ポリモーフィズム)セクションは、あなたが見るべき場所です。

于 2012-10-15T10:58:38.050 に答える