メソッドオーバーロードとは何ですか?
メソッドオーバーロードは、2つ以上のメソッドが同じ名前を共有しているが異なるパラメーターを持っているほとんどのオブジェクト指向プログラミング言語の機能です。具体的には、パラメーターの数、データ型、および/または順序は異なります。コードがコンパイルされると、正しい方法は、それがどのように呼び出されるかに基づいて自動的に選択されます。メソッドは一部のプログラミング言語でも関数として知られているため、メソッドオーバーロードは関数過負荷と呼ばれることもあります。
メソッドオーバーロードの簡単な例は、正方形の面積を計算するメソッドです。 Getarea(Square S)として定義される場合があります。この方法は、メソッドgetarea(円c)を追加することにより、円の面積をさらに計算するために過負荷になります。
メソッドオーバーロードの主要な要件は、メソッドが同じ名前を共有することです。メソッド署名 - メソッド名、パラメーターの数、およびパラメーターデータ型 - は、それ以外の場合は一意でなければなりません。このように、theコンパイラは、実行する方法を決定できます。
コンストラクターは、オブジェクトのインスタンス化に使用される方法で、しばしば過負荷になります。これは、非デフォルト値を持つオブジェクトを初期化するために行われます。たとえば、2つのフィールド(名前と生年月日、またはDOB)を持つ従業員オブジェクトには、従業員()、従業員(名前)、従業員(名前、DOB)の過負荷コンストラクターがあります。最初のコンストラクターは、空白の名前とDOBフィールドを持つ従業員オブジェクトを作成します。 2番目は名前フィールドを設定しますが、DOBフィールドを空白のままにし、3番目は名前とDOBフィールドの両方を定義します。
メソッドオーバーロードは、複数のメソッドを単一の方法として論理的に表示するために最も頻繁に行われます。 getarea()の例では、物理的に2つの方法がありますが、発信者には単一の論理getarea()メソッドが表示されます。このようにして、getarea()を拡張して、他の形状、三角形、台形、nd SO ON - 単一の方法として論理的にそれ自体を提示しながら。
メソッドも過負荷になり、逆方向の互換性を保持します。複雑な計算を行う方法には、わずかな変更でオプションで同じ計算を実行するための新しい要件が与えられる可能性があります。計算の実行方法を決定するメソッドに新しいパラメーターが追加されます - 古い方法または新しい方法。
メソッドが呼び出されるすべてのケースを見つけて新しいパラメーターを追加する必要がないため、メソッドは過負荷になります。新しい方法には古い署名があり、既存のコードによって呼び出されます。ロジック自体は含まれておらず、単に変更されたメソッドを呼び出して、新しいパラメーターの「古い方法」のデフォルトで渡すだけです。新しいコードは、変更されたメソッドを呼び出し、適切な値、古い方法、または新しい方法で新しいパラメーターを渡します。
メソッドオーバーロードは多型の一種であり、実際には複数の方法で同じ論理的方法を使用できます。自分THODの過負荷は、メソッドオーバーライドと同じではありません。メソッドオーバーライドは、親クラスのメソッドの定義が子供クラスによって変更される場所です。この場合、両方の方法に同じ署名があります。