0
1

More than 3 years have passed since last update.

java(インターフェース)

Posted at

インターフェースとしてできる条件

抽象クラスの親玉(一番上の方)
①すべてのメソッドは抽象メソッド
②基本的にフィールドを持たない

抽象度の高い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("・・・");
  }
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1