オーバーライドとは
ひとことで表すと「上書き」すること
スーパークラスのメソッドを
サブクラスに記述されたメソッドで上書きし、処理を行う
オーバーライドの条件
- 継承関係である
- メソッド名が同じ
- 引数の型、数、順番が同じ
- 戻り値の型が同じ
- サブクラスのアクセス修飾子がスーパークラスより、制限範囲が同じか制限以内であること
継承関係であること
オーバーライドは継承関係で使用される
継承とは、スーパークラスとサブクラスの関係のこと
メソッド名が同じ
スーパークラスに記述されたメソッド名と
サブクラスに記述されたメソッド名が同じであること
//スーパークラス public class Test { //メソッド名 public void index() { System.out.println("オーバーライドされる"); } }
//サブクラス public class Test1 extends Test{ //メソッド名 public void index() { System.out.println("オーバーライドする"); } }
引数の型、数、順番が同じ
引数とはメソッド名の括弧「()」内に記述されているものを示す
その引数の中がスーパークラスとサブクラスが同じであること
(例)
//引数の中が同じであること index(String name, int num)
戻り値の型が同じ
メソッド名の手前に記述されているのが、戻り値の型である
その戻り値の型がスーパークラスとサブクラスで同じであること
アクセス修飾子がスーパークラスより、制限範囲が同じか制限以内であること
例えば、
スーパークラスが「アクセス修飾子(public)」の場合
→サブクラスが「アクセス修飾子(public)」にすると実行できる
スーパークラスが「アクセス修飾子(public)」の場合
→サブクラスが「アクセス修飾子(なし)」にするとコンパイルエラーとなる
スーパークラスが「アクセス修飾子(なし)」の場合
→サブクラスが「アクセス修飾子(public)」にすると実行できる
プラスαの抑えておきたい知識
オーバーライドする場合は、
アノテーションを「@Override」記述することココの場所は
オーバーライドしているよ!とわかりやすくなるよ
記述しなくても実行に問題はない
コメント