「オーバーロード」と「オーバーライド」は、名前が似ている上に、どちらもメソッドに関する用語なのでよく混同されます。「オーバーロード」は多重定義とも呼ばれ、"戻り値や引数の型が異なる同名のメソッド"をいくつも定義することです。
例えば、hoge(int a)というメソッドが有ったとして、引数としてdouble型もとりたい、という場合に、hoge(double a)を"あたかも別のメソッドのように"、もう一つ定義することのことを指します。あるいは引数を増やしたい場合、hoge(int a, int b)という形で定義する事もできます。オーバーロードの場合、メソッドの機能として基本的な動きは変わらないようにするのが普通です。
それに対して、「オーバーライド」は再定義と呼ばれ、ある親クラスから継承したメソッドを、"今のクラスに合った動きをしてくれるメソッド"に定義を書きかえることを指します。例えば、親のクラスにあるfoo()メソッドの戻り値はint型であるが、今のクラスではString型で戻ってきて欲しいとします。そのとき、今のクラスのほうでfoo()メソッドを戻り値がString型になるように、あたかも"foo()メソッドが今のクラスのメソッドである"ように定義する事で、今のクラスではfoo()の戻り値がString型であるメソッドとして使えるようになるということです。
オーバーライドの場合は、親クラスのメソッドの機能を拡張したりするような形で使うのが普通です。その際、親クラスからメソッドの部分をコピーしてくるのは面倒なので、super()というメソッドを使うことで再定義前の親クラスのメソッドを今のクラスのオーバーライド部分で呼び出すのが普通です。
Top > 「オーバーロード」と「オーバーライド」
java言語の基礎知識

ご訪問ありがとうございます。Java言語の基礎知識や学習方法、およびその周辺ソフト・周辺技術についての解説しています。ジャバ言語を完全マスターして徹底活用する際のご参考にして下さい。