オーバーライドとは
ひとことで表すと「上書き」すること
スーパークラスのメソッドを
サブクラスに記述されたメソッドで上書きし、処理を行う
オーバーライドの条件
- 継承関係である
- メソッド名が同じ
- 引数の型、数、順番が同じ
- 戻り値の型が同じ
- サブクラスのアクセス修飾子がスーパークラスより、制限範囲が同じか制限以内であること
継承関係であること
オーバーライドは継承関係で使用される
継承とは、スーパークラスとサブクラスの関係のこと
メソッド名が同じ
スーパークラスに記述されたメソッド名と
サブクラスに記述されたメソッド名が同じであること
//スーパークラス
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」記述することココの場所は
オーバーライドしているよ!とわかりやすくなるよ
記述しなくても実行に問題はない


コメント