Java 文法 継承

Javaの基本文法である継承について解説します。

継承とは

一般的な言葉として親から子への継承といった言葉を聞いたことがあると思います。親の技能などを子へ受け継ぐ場合などで利用されますね。

Javaにもこの継承という概念があり親が持つ機能を子へ受け継ぐことが可能です。

具体的にはクラスに親子関係を持たせて機能を継承させることができます。

子クラスのことをサブクラスということもあります。

継承方法

クラスを継承する方法は以下のようにクラス宣言にextendsキーワードを追加します。

public 子クラス名 extends 親クラス名 {

}

今回は説明用に以下2クラスを利用します。

クラス名 説明
Parent 親クラス
Child 子クラス
Main 実行用クラス

◆Parent


public class Parent {

  public void showParent() {
    System.out.println("Call Parent");
  }

}

◆Child


public class Child extends Parent {

  public void showChild() {
    System.out.println("Call Child");
    showParent(); //親クラスのメソッド呼び出し
  }

}

◆Main


public class Main {

  public static void main(String[] args) {
    //子クラスをインスタンス化
    Child child = new Child();
    child.showParent(); //親クラスのメソッドを呼び出し

    child.showChild(); //子クラスのメソッドを呼び出し

    //親クラスをインスタンス化することももちろん出来ます
    Parent parent = new Parent();
    parent.showParent();
  }

}

◆実行結果

Call Parent
Call Child
Call Parent
Call Parent

継承を利用すると子クラスには定義されてないメソッドを利用できることがわかりました。

継承とアクセス修飾子

子クラスから呼び出せるものはアクセス修飾子によって異なります。

アクセス修飾子とは下記を指します。

アクセス修飾子 説明
public すべて参照可能
protected 同一パッケージ内(又はサブクラス)であれば参照可能
(省略) 同一パッケージ内のサブクラスであれば参照可能
private サブクラスからは参照不可

終わりに

今回はメソッドの継承を説明しましたが、他にもプロパティやコンストラクタの継承も可能です。ただし、メソッドの継承を利用するシーンが多いので今回はメソッドの継承に絞り説明をしました。

継承の使われ方として一番多いのが基本機能を親クラスに持たせて、差分を子クラスに持たせる方法です。

子クラスは複数あり一部の機能は子クラスごとに異なる機能である必要があるが、共通的な基本機能は親クラスに持たせてしまうことで、修正があっても変更が局所化しているため修正も楽にできます。

また、そのほかには今後解説するオーバーライドも一緒に利用されることが多いです。

ただし継承は階層が深くなると今度は逆にソースが読みにくくなる場合もあるので階層はある程度でとどめたほうが良いでしょう。

スポンサーリンク
スポンサードリンク
スポンサードリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする