メソッドのオーバーロード
今日の新しくて興味深いトピックは、メソッドのオーバーロードです。注意してください。メソッドのオーバーロードとメソッドのオーバーライドを混同しないでください。
オーバーライドとは異なり、オーバーロードは非常に簡単な操作です。これは実際にはメソッドの操作ではありませんが、パラメトリック多態性というひどい用語で呼ばれることもあります。
ここでの問題は、クラス内のすべてのメソッドが一意の名前を持つ必要があることです。まあ、それは完全に正確ではありません。いや、もっと正確に言えば、それはまったく正確ではありません。メソッド名は一意である必要はありません。一意である必要があるのは、メソッド名とメソッドのパラメータの型の結合です。この結合はメソッド シグネチャとして知られています
例:
コード | 説明 |
---|---|
|
これは許可されています。2 つのメソッドには一意の名前が付いています。 |
|
そしてこれも。2 つのメソッドには一意の名前 (シグネチャ) があります。 |
|
手法はやはり独特です |
|
しかし、これは許されません。方法は一意ではありません。たとえ異なる型を返したとしてもです。 |
|
しかし、これはできます。メソッドパラメータは一意です |
シグネチャにはメソッド名とパラメータのタイプが含まれます。メソッドの戻り値の型とパラメータ名は含まれません。クラスには同じシグネチャを持つ 2 つのメソッドを含めることはできません。コンパイラーはどちらを呼び出すべきかを認識できません。
パラメータ名はコンパイル中に失われるため、重要ではありません。メソッドがコンパイルされると、その名前とパラメーターの型のみがわかります。戻り値の型は失われませんが、メソッドの結果を何にも割り当てる必要がないため、署名にも含まれません。
OOP の原則によれば、ポリモーフィズムは、単一のインターフェイスの背後にさまざまな実装を隠すことです。System.out.println()
たとえば、メソッドを呼び出すと、渡された引数に応じて異なるメソッドが呼び出されます。これは実際のポリモーフィズムです。
このため、同じクラスに含まれる同じ名前の異なるメソッドは、ポリモーフィズムの弱い形式であると考えられます。
GO TO FULL VERSION