Java-継承

継承(inheritance)について

継承とは、あるクラスの実装を土台にして、別のクラスを実装するための方法です。

元になるクラスをスーパークラスと呼び、それを継承する新しいクラスをサブクラス(継承クラス)と呼びます。

スーパークラスの機能(フィールドやメソッドなど)をサブクラスに持たせることが可能となります。


クラスを継承させるメリット

  • クラス間の関係をプログラムとして表現できる。
  • プログラムを再利用しやすくなる。
  • 機能拡張しやすくなる

javaにおける継承の方法

既存のクラスから派生したクラスを作成したい場合には「extends」キーワードを記述します。

extendとは「延ばす、広げる、拡張する」という意味です。

なお、Javaでは多重継承はできません。


class サブクラス extends スーパークラス {
    // 内容
}

サンプル


// Inheritance.java

// スーパークラス
class SuperClass
{
    int data;

    void printData()
    {
        System.out.println( data );
    }
}

// 継承(サブ)クラス
class SubClass extends SuperClass
{
    int dataSub;

    void printDataSub()
    {
        System.out.println( dataSub );

        // スーパークラスのフィールドを出力。
        System.out.println( data );
    }
}

class Inheritance
{
    public static void main( String[] args )
    {
        SubClass ref = new SubClass();

        // スーパークラスのメソッドを実行する
        ref.data = 100;
        ref.printData();

        // サブクラスのメソッドを実行する
        ref.dataSub = 200;
        ref.printDataSub();
    }
}

thisとsuper

変数やメソッドがスパークラスメンバかサブクラスメンバかを区別します。

  • thisキーワードは現在のオブジェクト
  • superキーワードはスーパークラスのオブジェクト

コンストラクタの呼び出し

クラス内に複数のコンストラクタがある場合、thisキーワードをしようすることで別コンストラクタを呼び出せます。

明示的にスーパークラスのコンストラクタを呼び出す場合、superキーワードを使用します。


class Parent {
    Parent( int a, int b ){
    }
}

class Child {
    Child(){
        this( 0, 0 );
        super( 1, 1 )
    }
    Child( int a, int b ){
    }
}


関連ページ