インターフェースとしてできる条件
抽象クラスの親玉(一番上の方)
①すべてのメソッドは抽象メソッド
②基本的にフィールドを持たない
抽象度の高いHumanクラス
Human.java
public abstract class Human {     //上の①②を満たしている
  public abstract void run();
}
インターフェースとして宣言したHumanクラス
Human.java
public interface Human {
  void run();                        //public abstract を省略可能
}
インターフェースの実装
Hero.java
public class Hero implements Human { 
}
インターフェースによる多重継承
Hero.java
public class PrincessHero 
    implements Hero, Princess {    //親のインターフェースを複数継承できる
}
クラスでは多重継承はできないが、インターフェースなら可能
インターフェースの継承
Hero.java
public interface Human extend Creature {
  void talk();
  void watch();
  void hear();
  //さらに、親インターフェースからrun()を継承している
}
implements(実装)、extend(継承)の使い分け
- クラス同士、インターフェース同士なら
extend(継承) - クラスでインターフェースを使う(異種)なら
implements(実装) 
implements(実装)、extend(継承)の両方を使ったクラスの定義
Hero.java
public class Hero extends Charaater implements Human{
  // Charaaterからhpやnameなどのフィールドを継承
  // Charaaterから継承した抽象メソッドattack()実装
  public void attack(Goblin g) {
    System.out.println(this.name + "5のダメージをあたえた");
  }
  // さらにHumanから継承した4つの抽象メソッドを実装
  public void talk(){
    System.out.println("・・・");
  }
  public void watch(){
    System.out.println("・・・");
  }
  public void hear(){
    System.out.println("・・・");
  }
  public void run(){
    System.out.println("・・・");
  }
}