【Java学習】05 Overrideアノテーション [Java SE 11 Silver 紫本]

サブクラスにおいて同じメソッド名で異なる機能にする場合はオーバーライドのルールに従います。`@Overrideを記述するとメソッド名が違っていないかチェックしてくれます。

オーバーライドを多用するとロクなことにならない様な気がするのですが、大規模開発では必要な機能なのでしょうか。

class SuperA { 
  public void print(String s) {
    System.out.println("SuperA print : " + s);
  }
  public void method() { }
}
class SubA extends SuperA { 
  @Override
  public void Print(String s) { // printがPrintになっているのでコンパイルエラーになります
    s = "渡された文字列は " + s + " です";
    System.out.println("SubA print   : " + s);
  }
}
public class Main {
  public static void main(String[] args) {
    SuperA obj1 = new SuperA();
    obj1.print("Java");
    SubA obj2 = new SubA();
    obj2.print("Java");
  }
}
--------------------------------------------------

出力
--------------------------------------------------
Main.java:8: エラー: メソッドはスーパータイプのメソッドをオーバーライドまたは実装しません