Javaチュートリアル

Javaホーム Javaイントロ Javaはじめに Java構文 Javaコメント Java変数 Javaデータ型 Java型キャスト Java演算子 Java文字列 Java数学 Javaブール値 Java If ... Else Javaスイッチ JavaWhileループ JavaForループ Javaブレーク/続行 Java配列

Javaメソッド

Javaメソッド Javaメソッドパラメータ Javaメソッドのオーバーロード Javaスコープ Java再帰

Javaクラス

Java OOP Javaクラス/オブジェクト Javaクラス属性 Javaクラスメソッド Javaコンストラクタ Java修飾子 Javaカプセル化 Javaパッケージ/ API Javaの継承 Javaポリモーフィズム Java内部クラス Java抽象化 Javaインターフェイス Java列挙型 Javaユーザー入力 Java日付 Java ArrayList Java LinkedList Java HashMap Java HashSet Javaイテレータ Javaラッパークラス Javaの例外 Java RegEx Javaスレッド Javaラムダ

Javaファイル処理

Javaファイル Javaのファイルの作成/書き込み Java読み取りファイル Javaファイルの削除

Javaハウツー

2つの数字を追加する

Javaリファレンス

Javaキーワード Java文字列メソッド Java数学メソッド

Javaの例

Javaの例 Javaコンパイラ Java演習 Javaクイズ Java証明書


Javaインターフェイス


インターフェース

Javaで抽象化を実現する別の方法は、インターフェースを使用することです。

Aninterfaceは完全に「抽象クラス」であり、関連するメソッドを空の本体でグループ化するために使用されます。

// interface
interface Animal {
  public void animalSound(); // interface method (does not have a body)
  public void run(); // interface method (does not have a body)
}

implements インターフェイスメソッドにアクセスするには、インターフェイスを(の代わりに)キーワードを使用して別のクラスで「実装」(継承のようなもの)する必要がありますextendsインターフェイスメソッドの本体は、「implement」クラスによって提供されます。

// Interface
interface Animal {
  public void animalSound(); // interface method (does not have a body)
  public void sleep(); // interface method (does not have a body)
}

// Pig "implements" the Animal interface
class Pig implements Animal {
  public void animalSound() {
    // The body of animalSound() is provided here
    System.out.println("The pig says: wee wee");
  }
  public void sleep() {
    // The body of sleep() is provided here
    System.out.println("Zzz");
  }
}

class Main {
  public static void main(String[] args) {
    Pig myPig = new Pig();  // Create a Pig object
    myPig.animalSound();
    myPig.sleep();
  }
}

インターフェースに関する注記:

  • 抽象クラスと同様に、インターフェイスを使用してオブジェクトを作成することはできません(上記の例では、MyMainClassで「動物」オブジェクトを作成することはできません)。
  • インターフェイスメソッドには本体がありません-本体は「implement」クラスによって提供されます
  • インターフェイスの実装では、そのすべてのメソッドをオーバーライドする必要があります
  • インターフェイスメソッドはデフォルトabstractであり、 public
  • インターフェイス属性はデフォルトpublicで、 staticおよびfinal
  • インターフェイスにコンストラクターを含めることはできません(オブジェクトの作成には使用できないため)

インターフェースを使用する理由と時期

1)セキュリティを実現するには-特定の詳細を非表示にし、オブジェクト(インターフェイス)の重要な詳細のみを表示します。

2)Javaは「多重継承」をサポートしていません(クラスは1つのスーパークラスからのみ継承できます)。ただし、クラスは複数のインターフェース を実装できるため、インターフェースを使用して実現できます。注:複数のインターフェースを実装するには、それらをコンマで区切ります(以下の例を参照)。


複数のインターフェース

複数のインターフェースを実装するには、それらをコンマで区切ります。

interface FirstInterface {
  public void myMethod(); // interface method
}

interface SecondInterface {
  public void myOtherMethod(); // interface method
}

class DemoClass implements FirstInterface, SecondInterface {
  public void myMethod() {
    System.out.println("Some text..");
  }
  public void myOtherMethod() {
    System.out.println("Some other text...");
  }
}

class Main {
  public static void main(String[] args) {
    DemoClass myObj = new DemoClass();
    myObj.myMethod();
    myObj.myOtherMethod();
  }
}