Javaに関する様々な情報をご紹介します。

3クラスの継承

Javaに関する様々な情報をご紹介します。

クラスの継承

このページでは、クラスの継承について説明します。

概要

ここではオブジェクト指向プログラムの特徴の一つである継承について説明します。Javaでは、継承を用いることで、既に存在するクラスに差分だけ追加して、新しいクラスを作成することができます。例えば、三色ボールペン、消せるボールペンというクラスを作る場合、それぞれ一からクラスを作るのではなく、ボールペンというクラスを作り、それを元に差分だけ追加して三色ボールペン、消せるボールペンというクラスを作ります。そうすることで、それぞれのクラスを一から作るより簡単にクラスを作成できます。

また、ボールペンクラスに機能を追加したい場合、三色ボールペン、消せるボールペン、それぞれのクラスを修正するのではなく、ボールペンクラスのみの修正で対応できます。継承した元のクラスに変更があった場合、継承した先のクラスにはその変更も引き継がれるので、個別にクラスを修正する必要はありません。

継承にはこれらの利点があり、これらは、プラグラムの管理のしやすさ、メンテナンス性を高めてくれます。継承の元となるクラスをスーパークラス、継承した先のクラスをサブクラスといいます。

クラスの継承

作成

クラスの継承は以下の枠内のフォーマットで行われます。クラスの継承の例を以下に記載します。

class サブクラス名 extends スーパークラス名 { クラス本体 }

スーパークラス(BollpointPenクラス)

class BollpointPen {
    void exShow() {
        System.out.println("これは、ボールペンクラスです。");
    }
}

サブクラス(ThreeBollpointPenクラス)

class ThreeBollpointPen extends BollpointPen { //スーパークラスであるBollpointPenクラスを継承してThreeBollpointPenクラスを宣言
    void exThreeShow() {
        System.out.println("これは、三色ボールペンクラスです。");
    }
}

Mainクラス

class Main {
    public static void main(String[] args) {
        ThreeBollpointPen ins1 = new ThreeBollpointPen();  //ThreeBollpointPenクラスのインスタンスの生成
        ins1.exShow(); //スーパークラスのメソッドを呼び出し
        ins1.exThreeShow(); //サブクラスのメソッドを呼び出し
    }
}

実行結果

C:\java\source>javac Main.java

C:\java\source>java Main  ##サブクラスからスーパークラス、サブクラスの両方のメソッドが利用可能です。
これは、ボールペンクラスです。
これは、三色ボールペンクラスです。

C:\java\source>

クラスの継承の注意点

クラスの継承について注意点が5つあります。

  1. Javaでは、1つのサブクラスが継承できるスーパークラスは1つまでです。2つ以上のスーパークラスを継承することはできません(サブクラス extends スパークラス1,スーパークラス2といったことはできません)。
  2. スーパークラスでprivate修飾子を付与して宣言されているメンバ変数・メソッドはサブクラスから参照できません。
  3. スーパークラスでアクセスレベル無指定(デフォルト)で宣言されているメンバ変数・メソッドはサブクラスがスーパークラスと同一パッケージである限りサブクラスから参照することができます。パッケージの詳細についてはパッケージを参照してください。
  4. final修飾子が付与されたスーパークラスを継承することはできません。
  5. スーパークラスで宣言されたコンストラクタはサブクラスに継承されません。サブクラス側でコンストラクタを宣言しなおすか、サブクラスのコンストラクタ内でスーパークラスのコンストラクタを呼び出す必要があります。

3クラスの継承