導入
継承したフィールドやメソッドは、サブクラスの中で「もともと自分が持っていたもの」のようにそのまま使えます。ここで改めて、その感覚を確認しておきましょう。
説明
Dog は Animal を継承していますが、Animal の eat() をそのまま呼びつつ、Dog 独自の bark() も呼べます。
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("ポチ");
dog.eat(); // 親から継承したメソッド
dog.bark(); // Dog独自のメソッド
}
}
class Animal {
String name;
Animal(String name) {
this.name = name;
}
void eat() {
System.out.println(name + "がごはんを食べる");
}
}
class Dog extends Animal {
Dog(String name) {
super(name);
}
void bark() {
System.out.println(name + "が吠える");
}
}
bark() の中で name を使っていますが、これは Dog 自身のフィールドではなく Animal から継承した name です。継承したフィールドは、サブクラスの中でも普通のフィールドと同じように使えます。
やってみよう
下のエディタを実行し、Dog が継承した eat() と独自の bark() の両方を呼べることを確認しましょう。Dog にもう1つ独自のメソッドを追加してみてください。
演習
Bird extends Animal を作り、独自メソッド fly()(name + "が飛ぶ" と表示)を追加してください。main で new Bird("ツバメ") を作り、継承した eat() と独自の fly() の両方を呼んでください。
ヒント1を見る
class Bird extends Animal { Bird(String name) { super(name); } void fly() { System.out.println(name + "が飛ぶ"); } }。
ヒント2を見る
main で Bird b = new Bird("ツバメ"); b.eat(); b.fly(); の順に呼びます。