サブクラスにおいて同じメソッド名で異なる機能にする場合はオーバーライドのルールに従います。`@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: エラー: メソッドはスーパータイプのメソッドをオーバーライドまたは実装しません