オーバーライドとオーバーロードの違い
オーバーライドとオーバーロードは、Javaのオブジェクト指向プログラミングの重要な概念です。
オーバーライドとは、サクラスがスーパークラスの既存のメソッドを再定義することです。サクラスがスーパークラスをオーバーライドするとき、メソッド名、戻り値の型、およびパラメータリストはスーパークラスのメソッドと同じでなければなりませんが、メソッドの実装ロジックは変更できます。オーバーライドは多様性を実現しました。スーパークラス参照がサクラスオブジェクトを参照するとき、サクラスのオーバーライドされたメソッドが呼び出されます。
オーバーロードとは、同じメソッド名をメソッド内で複数定義でき、引数のリストが異なる(引数の数、型、順序が異なる)ことを言います。オーバーロードはメソッドの多態を実現し、引数のリストの違いによって呼び出される同じ名前のメソッドを区別します。
違い:
- オーバーライドは親クラスのメソッドを再実装したもの、オーバーロードは同じ名前のメソッドを1つのクラス内で複数定義したもの
- オーバーライドするメソッドのメソッド名、戻り値型、引数リストは、オーバーライドされるメソッドと一致しなければならず、オーバーロードするメソッドの引数リストは異なっていなければなりません。
- ポリモーフィズムとは同一のインターフェイスを持つオブジェクトの処理を、継承による異なる実装の動作によって実現する機能です。オーバーライドは継承において親クラスのメソッドを派生クラス側で再定義したメソッドです。オーバーロードは同一クラス内で引数に応じたメソッドの実装の選択です。