メソッドオーバーライド:
これは単なる名前の問題ではなく、Java の基本的な機能です。
動的メソッドディスパッチの概念に基づいています。
動的メソッドディスパッチ:
重複するメソッドの呼び出しがコンパイル時ではなく実行時に解決されるメカニズムです。
Java でのポリモーフィズムの実装を許可します。
仕組み:
スーパークラス参照変数はサブクラス オブジェクトを参照できます。
オーバーライドされたメソッドがスーパークラス参照を通じて呼び出される場合、実行されるメソッドのバージョンは呼び出し時のオブジェクトの型に基づいて決定されます。
したがって、実行するメソッドの選択は実行時に行われます。
重要性:
参照されるオブジェクトの型 (参照変数の型ではない) によって、オーバーライドされたメソッドのどのバージョンが実行されるかが決まります。
これにより、スーパークラス参照変数によって参照されるさまざまなタイプのオブジェクトが、オーバーライドされたメソッドのさまざまなバージョンを呼び出すことができます。
プログラム構造:
スーパークラス: 補足、who() メソッドを使用します。
サブクラス: Sub1 と Sub2、両方とも who() メソッドをオーバーライドします。
main() での実行:
オブジェクト superOb (タイプ Sup)、subOb1 (タイプ Sub1)、および subOb2 (タイプ Sub2) の作成。
Sup 型の supRef 参照変数は、さまざまなオブジェクトを参照するために使用されます。
行動:
プログラム出力:
参照されるオブジェクトのタイプ (superOb、subOb1、または subOb2) に応じて、対応するバージョンの who() メソッドが呼び出され、表示されます。
これは動的ディスパッチの概念を示しており、実行されるメソッドは実行時に決定され、ポリモーフィズムの実装が可能になります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3