継承時のメソッドの上書き〜オーバーライド〜
オーバーライド
もし継承されたクラス(子クラス)で親クラスから自動で継承されているコード(自動なので記述しなくても良いコード)を
そのまま使うのではなく子クラスの場合だけ変更したい時は?
⇩
子クラス側で変えたいメソッドを再度定義する(メソッドの上書きをする)
ex.親クラスで既に定義されているrun( )メソッドの中身を「逃げる」→「撤退する」に変更する
public class SuperHero extends Hero{
public void fly{.....
} //親クラスから+αで追加したいメソッド
public void run( ){
System out println("撤退した"); //子クラス側でメソッドの中身を再定義
}
}
この子クラス側でメソッドの中身を上書き変更することを「オーバーライド」という
〈オーバーライドかどうか見分けるためのルール〉
・親クラスに同じメンバがなければ、そのメンバは「追加」になる
・親クラスに同じメンバがあれば、そのメンバは「上書き変更」される(オーバーライド)
ただし、メソッド宣言にfinalがついている→オーバーライドできない
(クラス自体の継承は許可 finalがついているメソッドのみ)
クラス宣言にfinalがついている→継承自体できない
ex. public final class Main{....