#author("2018-08-29T09:28:09+09:00","ldap:pandora"," pandora") #author("2018-08-29T09:48:43+09:00","ldap:pandora"," pandora") [[Java]] * ''インターフェース'' [#y487b414] - インターフェースクラスとは クラス内に、含まれるメソッドに具体的な内容を記述せず、変数とメソッドの型のみを定義したクラス。 抽象クラスの一部で、クラス内に、含まれるメソッドに具体的な内容を記述せず、変数とメソッドの型のみを定義したクラス。 ※抽象クラスのabstract修飾詞がついていないが、暗黙的に付与されている。明示的に指定することも可能。 #highlighter(java,number){{ // インターフェースクラスの宣言 public interface Sports{ // メソッドの型のみ定義し、中身を一切記載しない。 // メソッドの宣言 public void winMessage(); // メソッドの宣言 public void loseMessage(); // メソッドの宣言 public String getRule(); // メソッドの宣言 public void setRule(String rule); } }} - 特徴 -- インターフェースクラスを継承したクラスは、必ずインターフェースクラス内にあるメソッドを全てオーバーライドしなければならない。 →今後インターフェースクラスを継承して作成されたクラスは、インターフェースクラスに定義されているメソッドを全て持つことを「約束」しています。 #highlighter(java,number){{ // Sportsインターフェースクラスを継承 public class Soccer implements Sports { // Soccerクラスは、Sportsクラスに定義されているメソッドを全て定義(オーバーライド)しなければならない。 @Override public void winMessage() { } @Override public void loseMessage() { } @Override public String getRule() { } @Override public void setRule(String rule) { } } }} -- インターフェースクラスの多重継承を許可する。 #highlighter(java,number){{ // インターフェースクラスの宣言 public interface Human{ // メソッドの型のみ定義し、中身を一切記載しない。 // メソッドの宣言 public void speek(); // メソッドの宣言 public void listen(); } // Sports,Human 複数のインターフェース継承 public class Soccer implements Sports,Human { @Override public void winMessage() { } @Override public void loseMessage() { } @Override public String getRule() { } @Override public void setRule(String rule) { } @Override public void speek() { } @Override public void listen() { } } }}