Developer

【はじめてのJava】鳥と飛行機をまとめるには(ソースコード)【クラスの継承編】
2022.10.31
Lv1

【はじめてのJava】鳥と飛行機をまとめるには(ソースコード)【クラスの継承編】

はじめてのJava

このシリーズでは、初めてJavaやプログラミングを勉強する方向けに、Javaによるプログラミングの基礎を説明していきます。
目標レベルは、Javaの資格試験の一つである「Oracle Certified Java Programmer, Silver」(通称Java Silver)に合格できる程度の知識の習得です。
はじめてJavaやプログラムに触れる方にもできるだけわかりやすい解説を心がけていきます。


クラスの継承編

クラスの継承編では、Javaを扱う上で重要な「クラスの継承」について扱っていきます。

前回は、インタフェースを利用してある機能を共通化する方法を説明しました。
今回は、ソースコードを記載します。
なお、この内容はJava Silverよりも少し高度な内容です。


目次


クラスの設計

プログラムを作るときに、いきなりソースコードの作成を始めることはまずありません。通常はまずプログラムの全体像やクラスの設計図を考えます。

今回はクラスを継承する際の注意点を考えてみます。


鳥と飛行機の実装を考える

前々回、鳥と飛行機を例に、「フィールド」や「メソッド」が共通していても、「まとめて扱うとおかしくなるもの」については継承して作成してはいけない、と説明しました。

このような場合、インタフェースを使ってその機能だけを共通化することで設計をすっきりさせることができます。

この場合、どのようなソースコードになるのでしょうか。見てみましょう。


ソースコード

ソースコードは以下です。

Flyableインタフェース

public interface Flyable{
  
  public abstract void fly(); //抽象メソッド
  
}

Owlクラス

public class Owl implements Flyable{
  @Override
  public void fly(){
    System.out.println("バサバサ");
  }
}

AirPlaneクラス

public class Airplane implements Flyable{
  int speed; //速度
  double fuel; //燃料

  @Override
  public void fly(){
    speed += 100;
    fuel -= 10;
    if(fuel <= 0){
      System.out.println("燃料切れです。緊急着陸します。");
    }
  }
}

FlyableMainクラス(動作確認用クラス)

public class FlyableMain{
  
  public static void main(String[] args){
    
    Owl o = new Owl();
    Airplane a = new Airplane();
    
    o.fly();
    a.fly();
    
  }
  
}

まとめ

ある「機能」だけを共通化したい場合は「インタフェース」を実装する形で実現する。
簡単なソースコードの例は上記の通りです。


次回

次回もクラスの設計について考えてみます。


はじめてのJavaシリーズの目次はこちら
クラスの継承編はこちら


【新作】Javaの復習問題シリーズはこちら
java 11 の練習問題一覧はこちら
はじめてのJavaシリーズの練習問題一覧はこちら