【1日45分×6日でわかる】オブジェクト指向 Day4: 継承によるクラス拡張

似たようなクラスを何個も作ると、同じコードが重複してしまいます。それを解決するのが「継承」です。継承を使うと、共通部分を親クラスにまとめ、差分だけを子クラスに書けます。今日は45分で、継承の仕組みを理解し、動物クラスを拡張します。時間配分の目安は、説明10分、実践27分、振り返り8分です。

継承とは(目安10分・インプット)

継承とは、既存のクラス(親クラス)の機能を引き継いで、新しいクラス(子クラス)を作る仕組みです。`extends` を使います。子クラスは、親のフィールドやメソッドをそのまま使え、さらに独自の機能を追加できます。

public class Animal {
    String name;
    void eat() {
        System.out.println(name + "が食べる");
    }
}

public class Dog extends Animal {   // Animalを継承
    void bark() {
        System.out.println(name + "「ワン」");
    }
}

Dogは自分では eat を書いていませんが、親のAnimalから引き継いでいるので使えます。共通の eat を1か所にまとめられるのが継承の利点です。

【実践】動物クラスを継承で拡張(目安27分・手を動かす)

`Animal.java`、`Dog.java`、そして猫を表す `Cat.java`、さらに `Main.java` を作りましょう。

public class Cat extends Animal {
    void meow() {
        System.out.println(name + "「ニャー」");
    }
}
public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.name = "ポチ";
        dog.eat();    // 親から継承
        dog.bark();   // Dog独自

        Cat cat = new Cat();
        cat.name = "タマ";
        cat.eat();    // 親から継承
        cat.meow();   // Cat独自
    }
}

`javac Main.java` → `java Main` で実行します。DogもCatも、共通の eat を親から引き継ぎつつ、それぞれ独自の動作を持っていることが分かります。演習として、`Bird`(鳥)クラスを追加し、独自メソッド fly を作ってみましょう。

よくある疑問・つまずきポイント

**親と子、どちらに何を書けばいいですか?**

複数のクラスに共通する機能は親クラスに、そのクラスだけの機能は子クラスに書きます。「共通は上、固有は下」と覚えましょう。

**superとは何ですか?**

`super` は親クラスを指す言葉で、親のコンストラクタやメソッドを呼ぶときに使います。継承を深く使うと登場するので、今は「親を呼ぶ合図」と覚えておけば十分です。

まとめ(目安8分)

今日は継承(extends)で、共通部分を親にまとめ、差分を子で拡張する方法を学びました。コードの重複を減らせる強力な仕組みです。明日は、同じ命令で実体ごとに違う動きをさせる「ポリモーフィズム」に進みます。今日の継承がその土台になります。

コメント

タイトルとURLをコピーしました