Javaのインターフェース

Java によるオブジェクト指向プログラミング入門

Sani Yusuf

Lead Software Engineering Content Developer

継承の限界

  • 継承では、すべてのメンバーが継承される
  • メンバーを選択的に継承することはできない

  // Car クラス   
  class Car {
    // バッテリー容量は電気自動車にのみ適用
    public int batteryCapacity;
    void drive() {

    }  

  }


  // Toyota クラス
  class Toyota extends Car {  
    void drive(){

    }           
  }


// Main クラス public static class Main { public static void main(String[] args) { Toyota myToyota = new Toyota(); // すべての車が「batteryCapacity」を継承 // 電気自動車でなくても System.out.println( myToyota.batteryCapacity); // 非該当 } }
Java によるオブジェクト指向プログラミング入門

インターフェースの作成

  • インターフェースは、プロパティやメソッドを選択的に利用する手段を提供
  • クラスは implements キーワードでインターフェースを利用

  // ElectricCar インターフェース 
  interface ElectricCar {

  }





  // ElectricCar インターフェースを
  // 実装する Tesla
  class Tesla implements ElectricCar {

  }








Java によるオブジェクト指向プログラミング入門

インターフェースにプロパティを追加

  • プロパティ名は慣例で UPPER_SNAKE_CASE
  • 値は即時に設定し、変更できない
  • 実態は public static final

  interface ElectricCar {
    // 暗黙的に public static final
    // 変更不可
    int BATTERY_CAPACITY = 310;

  }




Java によるオブジェクト指向プログラミング入門

インターフェースにメソッドを追加

  • インターフェースは通常、メソッドを持つ
  • メソッドは既定で abstract(実装なし)
  • 実装を持つ具象メソッドも定義できる
  • すべての abstract メソッドはサブクラスで実装必須
  interface ElectricCar {
    // 暗黙的に public static final
    // 変更不可
    int BATTERY_CAPACITY = 310;


// これは既定で抽象メソッド void charge();
// これは具象メソッド void autoPark() { }
}
class Tesla implements ElectricCar { // 実装必須 public void charge() { } }
Java によるオブジェクト指向プログラミング入門

練習しましょう!

Java によるオブジェクト指向プログラミング入門

Preparing Video For Download...