Java サブクラスで親クラスのプロパティをオーバーライドする方法
Javaでは、サブクラスはスーパークラスのフィールドを継承し、オーバーライドすることでフィールドを覆すことができます。サブクラスは「super」キーワードを用いてスーパークラスのフィールドを参照し、オーバーライドするメソッドには「@Override」アノテーションを付与します。
親クラスのプロパティをサブクラスで上書きする方法を説明するサンプルコードを以下に示します。
class Parent {
protected String name;
public Parent(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class Child extends Parent {
private int age;
public Child(String name, int age) {
super(name);
this.age = age;
}
@Override
public String getName() {
return super.getName() + " Jr.";
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
Parent parent = new Parent("John");
System.out.println(parent.getName()); // Output: John
Child child = new Child("Mike", 10);
System.out.println(child.getName()); // Output: Mike Jr.
System.out.println(child.getAge()); // Output: 10
}
}
上の例では、Child クラスは、Parent クラスを継承し、父クラスの属性をオーバーライドするために、getName() メソッドを定義し直しています。Child クラスの getName() メソッドでは、super.getName() によって親クラスの属性にアクセスし、それに「 Jr. 」を追加して戻り値を変更しています。
親クラスのプロパティをオーバーライドするには、子クラスのメソッド名が同じで引数リストが同じである必要があります。また、子クラスのアクセス修飾子は親クラスのアクセス修飾子以下である必要があります。上の例では、Child クラスの getName() に @Override をつけて親クラスのメソッドをオーバーライドすることを明示しています。