似たようなクラスを何個も作ると、同じコードが重複してしまいます。それを解決するのが「継承」です。継承を使うと、共通部分を親クラスにまとめ、差分だけを子クラスに書けます。今日は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)で、共通部分を親にまとめ、差分を子で拡張する方法を学びました。コードの重複を減らせる強力な仕組みです。明日は、同じ命令で実体ごとに違う動きをさせる「ポリモーフィズム」に進みます。今日の継承がその土台になります。

コメント