【プログラミングしてみよう8】Javaの継承でクラスを整理する

Java

前回はクラスとオブジェクト指向の基礎として、フィールドとメソッドをまとめる方法を学びました。 今回は、オブジェクト指向の重要な考え方のひとつである「継承」について解説します。 継承を使うことで、似たクラスを効率よく整理し、コードの重複を減らすことができます。

継承の基本

前回作った Person クラスのように、似た特徴を持つクラスを複数作りたい場合があります。たとえば「学生」は、名前や年齢を持つという点では「人」と共通していますが、通っている学校など固有の情報も持っています。

こうした「共通部分」と「固有部分」を整理する仕組みが「継承」です。継承を使うと、すでにあるクラス(親クラス)の機能を引き継いだ新しいクラス(子クラス)を作ることができます。

public class 子クラス名 extends 親クラス名 {
    // 子クラス独自のフィールドやメソッド
}

extends というキーワードを使うことで、親クラスのフィールドやメソッドを子クラスでそのまま使えるようになります。

サンプルコード(継承)

フォルダ作成

「Java02」フォルダを作成します

ファイル作成

「Java02」フォルダに Person.javaStudent.javaInheritanceTest.java という名前でファイルを作成します

コード入力

Person.java に以下のコードを入力します。

public class Person {
    String name;
    int age;

    void selfIntroduce() {
        System.out.println("私の名前は" + name + "です。年齢は" + age + "歳です。");
    }
}

Student.java に以下のコードを入力します。

public class Student extends Person {
    String school;

    void study() {
        System.out.println(name + "は" + school + "で勉強しています。");
    }
}

InheritanceTest.java に以下のコードを入力します。

public class InheritanceTest {
    public static void main(String[] args) {
        Student student = new Student();
        student.name = "ぱんまる";
        student.age = 20;
        student.school = "パンマル大学";

        student.selfIntroduce();
        student.study();
    }
}

コンパイル

javac Person.java Student.java InheritanceTest.java

実行

java InheritanceTest

実行結果は次のようになります。

私の名前はぱんまるです。年齢は20歳です。
ぱんまるはパンマル大学で勉強しています。

コードの解説

Student クラスは extends Person とすることで、Person クラスが持つ nameageselfIntroduce をそのまま引き継いでいます。InheritanceTest.java の中で student.selfIntroduce(); を呼び出していますが、このメソッドは Student クラスの中に書かれていないにもかかわらず、問題なく実行できています。これは親クラスである Person から引き継いだメソッドだからです。

一方、school フィールドや study メソッドは Student クラス独自のものです。Person クラスにはこれらは存在しないため、Person のインスタンスから study() を呼び出すことはできません。

このように、共通する部分を親クラスにまとめておき、それぞれのクラスに固有の部分だけを子クラスに追加することで、同じようなコードを何度も書く必要がなくなります。たとえば「会社員」や「先生」といった別のクラスを作る場合も、Person を継承することで nameageselfIntroduce を再利用できます。

まとめ

継承を使うことで、共通するフィールドやメソッドを親クラスにまとめ、固有の部分だけを子クラスに追加することができます。extends というキーワードひとつで、親クラスの機能をそのまま引き継げる点が大きなメリットです。クラスが増えてきたときに、共通点を整理して継承関係を作っておくと、コードの管理がしやすくなります。次回は、継承を活用してさらに柔軟な動作を実現する「ポリモーフィズム」について解説していきます。

2026/06/17(水) ぱんまる

コメント

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