LoginSignup
0
1

More than 3 years have passed since last update.

【Java】オーバーライドとオーバーロードってなに

Posted at

今一つアウトプットの勘所というのがわかりませんが、まぁ備忘録替わりです。
書き方云々で悩むよりはよいでしょうということであまり考えずにやっていきましょう。

IT系(?)新卒一年目、学生時代にコンピュータ系の経験なしという死海に投げ込まれたナメクジのようなもんです。
JavaSE11Silverとりたくて黒本やってるのですが、個人的躓きポイントとしてあるのがオーバーライドとオーバーロードというものです。紛らわしい。名前つけた人はそうとは思わなかったんでしょうか。思わなかったでしょうな。人の心がない。大体6文字あって4文字同じなのですから多数決で言えば同じでしょう。

*以下の記述は精密性、正確性ともにかけているであろうざっくりメモです。信じてはなりません。

端的に
【オーバーライド】
・スーパークラスで定義されているメソッドをサブクラスでも使えるように再定義したもの。
ちなみに、スーパークラスは継承された側でサブクラスは継承した側のクラスです。
・オーバーライドされた側、した側について、戻り値、メソッド名、引数が同じが同じでなければならない。
・アクセス制限レベル(publicとかprivateとかabstractとかfinalとか)について、オーバーライドする側はオーバーライドされた側より緩いアクセス制限でなければならない
(スーバークラスのオーバーライドされる側がpublicで、サブクラスのオーバーライドする側がprivateとかはできない。)
・finalがついているメソッドをオーバーライドすることはできない。
・オーバーライドされるメソッドのアクセス修飾子がabstractであるとき、そのメソッドはオーバーライドされなければならない。
 されなかった場合、クラスそのものがabstractクラスになる。(ところでabstractクラスってどんなだっけ...)

【オーバーロード】
・同一クラス内で、同一のメソッド名で、引数の方、引数の数、並びが異なるメソッドを複数作ること。
・戻り値の方、アクセスレベル、引数名、throw節が異なるとオーバーロードできず、コンパイルエラーになる。

*オーバーロードは継承されたクラスのメソッドを継承したクラスでも使えるようにするもの。
*オーバーロードは、同一クラス内で、引数の型や数を変えたメソッドを作るもの。

みたいです。

ちなみに、それぞれ英訳すると
overrideは …の上に乗る。
overloadは 過負荷にする。加重積載する。
という意味だそうで、

オーバーライドは親クラスの上に乗っかるイメージ、オーバーロードはクラスに同じメソッドを過積載するイメージにすると覚えやすかったりするんでしょうかね。

最後に、これ記事書いてるとき右側にプレビュー見えるんですけど可読性死ぬほど低いっすね。

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1