よくオーバーライドとオーバーロードを間違えます。
名前は似ているが、全然別の概念ですね。
けれど何度定義を読み返しても、混同してしまいます。
あまりにも間違えるので、絵を描きました。
オーバーライド(override)
オブジェクト指向プログラミングにおいてオーバーライド (override) とは、スーパークラスで定義されたメソッドをサブクラスで定義し直し、動作を上書き(変更)することである。
つまり、オーバーライドする目的は、継承したサブクラスにおいて、スーパークラスのメソッドに処理を追加することです。
メソッドの型、及び引数の数や型は基本的には変えられません。
オーバーロード(overload)
多重定義 (たじゅうていぎ) あるいは オーバーロード (英: overload) とは、プログラミング言語において同一の名前(シンボル)を持つ関数あるいはメソッドおよび同一の演算子記号について複数定義し、利用時にプログラムの文脈に応じて選択することで複数の動作を行わせる仕組みである。
こちらは、基本的には同一クラスでの話。
メソッド名は同じだが、メソッドの型や引数の数や型も変えるし、処理も変えるという場合に使う。
目的としては、あるメソッドでインプットの種類によって処理や戻り値も変えるが、
メソッドとしては同じことなんだよなあ……という場合に使う。