[Java] 継承とは

継承について、シンプルな例を使って整理。


継承とは

親クラスの中身(変数、メソッドなど)を、子クラスに受け継がせることができる。


なぜ継承を使うのか?

プログラムの行数が減り、手間が省ける。修正の時も、共通部分に関しては、一回の修正で複数の箇所を修正できる。


継承の例

実際に継承の例を作ってみる。

まず下記のクラスを用意した。

  • 親クラス:MountainPlace
  • 子クラス:MountainPlan
  • メインクラス:Main

下記の例を使って、親クラスの定義した変数を子クラスのメソッドで使い、メインクラスで出力してみる。



親クラス

// MountainPlace.java
//親クラス
public class MountainPlace {
    
    //親クラスの変数
    String name;
    String place;
    
    //親クラスのメソッド
    String placeDetail() {
		return name + "の場所は" + place + "にあります";
	}
}

まずは親クラスとして、MountainPlaceを設定する。上記の通り、変数にnameとplaceを設定し、メソッドはplaceDetail()を作成。


子クラス


子クラスとしてMountainPlanを設定。extendsでMountainPlaceを継承している。

継承により、親クラスで設定した変数nameは引き継がれるため、子クラスのメソッド内でnameを定義することなく、そのままnameを使用することができる。


継承された子クラスでインスタンスを作って出力

// Main.java
public class Main{
    public static void main(String[] args) {
        
        //インスタンスをMountainPlan(子クラス)から作成。
        MountainPlan mountain1 = new MountainPlan();
        
        //MountainPlace.java (親クラス)の変数
        mountain1.name = "白馬岳";
        mountain1.place = "長野県と新潟県と富山県の間";
        
        //MountainPlan.java (子クラス)の変数
        mountain1.time = "7月";
        mountain1.person = "Aさん";
        
         //MountainPlace.java(親クラス)のメソッド
		System.out.println(mountain1.placeDetail()); 
		
		//MountainPlan.java(子クラス)のメソッド
		System.out.println(mountain1.whenToGo()); 
		System.out.println(mountain1.whoToGo());

    }
}


Mainクラスで出力してみる。

まずは親クラスで設定した変数nameとplace、子クラスで設定した変数timeとpeersonに具体的な値を入れる。

その後MountainPlanクラス(子クラス)を使って、インスタンスを作成。

メソッドを使って出力した。


実際に出力


親クラスの変数のnameが子クラスでもきちんと呼び出せた。


全体像を把握する

下記にJavaやwebアプリケーションについての記事をまとめた。


[st-card myclass=”” id=3431 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]


コンピューターについての全体像も把握しておくと、プログラミングのさらなる理解に役立つ。


[st-card myclass=”” id=4587 label=”” pc_height=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]



今回使ったコード

// Main.java
public class Main{
    public static void main(String[] args) {
        
        //インスタンスをMountainPlan(子クラス)から作成。
        MountainPlan mountain1 = new MountainPlan();
        
        //MountainPlace.java (親クラス)の変数
        mountain1.name = "白馬岳";
        mountain1.place = "長野県と新潟県と富山県の間";
        
        //MountainPlan.java (子クラス)の変数
        mountain1.time = "7月";
        mountain1.person = "Aさん";
        
         //MountainPlace.java(親クラス)のメソッド
		System.out.println(mountain1.placeDetail()); 
		
		//MountainPlan.java(子クラス)のメソッド
		System.out.println(mountain1.whenToGo()); 
		System.out.println(mountain1.whoToGo());

    }
}
// MountainPlace.java
//親クラス
public class MountainPlace {
    
    //親クラスの変数
    String name;
    String place;
    
    //親クラスのメソッド
    String placeDetail() {
		return name + "の場所は" + place + "にあります";
	}
}
// MountainPlan.java
//親クラスから子クラスへ継承。
class MountainPlan extends  MountainPlace {
	
	//子クラスの変数
	String time;
    String person;
	
	//子クラスのメソッド。nameは親クラスから継承されている。
	String whenToGo() {
		return time + "に" + name + "にいく予定です";
	}
	String whoToGo() {
		return person + "と" + name + "にいく予定です";
	}
}