Javaインタフェース(interface)の概念と使用

1679 ワード

前回、私たちは抽象クラスについて話しましたが、抽象クラスを知らない人は私が最後に書いたJava抽象クラスを見てもいいです.
抽象クラスには、1つ以上の抽象メソッドを含めることができます.しかしインタフェース(interface)では、すべての方法が抽象的でなければならず、抽象クラスよりも「抽象的」な方法体を持つことはできません.
インタフェースはinterfaceキーワードを使用して修飾され、特殊な抽象クラスと見なすことができ、クラスがどのようにするかを規定するのではなく、何をしなければならないかを指定することができます.
public interface InterfaceTest {
    int a=10;
    void method1();
    void method2();
}

インタフェースはいくつかの定数と抽象メソッドの集合であり,インタフェースは特殊な抽象クラスのようである.しかし、1つのクラスは1つのクラスしか継承できません.「単一継承」と呼ばれ、Javaクラスが「マルチ継承」できないことを補うために、Javaはインタフェースの概念を導入しているので、1つのクラスは複数のインタフェースを実現することができます.
しかし、インタフェースには、以下のような機能があります.
  • インタフェースでは抽象メソッドしか定義できません.これらのメソッドのデフォルトはpublic abstractです.したがって、メソッドを宣言するときにこれらの修飾子を省略できます.インタフェースでインスタンス変数、非抽象的なインスタンスメソッド、および静的メソッドを定義しようとすると、不正です.
  • インタフェースには構造方法がなく、インスタンス化できない.
  • あるインタフェースは別のインタフェースを実現しないが、複数の他のインタフェースを継承することができ、インタフェースのマルチ継承特徴はクラスの単一継承性を補う.

  • インタフェースはオブジェクト向けJavaプログラム設計において重要な地位を占めている.実際、設計段階で最も重要な任務の一つは、各部分の接続を設計し、インタフェースの組み合わせを通じて、最も基本的な基本的なフレームワーク構造を形成することである.
    インタフェースの使用
    インタフェースの使用はクラスの使用とは少し違います.クラスを使用する必要がある場合は、newキーワードを直接使用してクラスのインスタンスを構築しますが、インタフェースはnewキーワードを直接使用してインスタンスを構築することはできません.
    インタフェースはクラスによって抽象的な方法を実装し、インスタンス化する必要があります.クラス実装インタフェースのキーワードはimplementsです.
    クラスがインタフェースのすべての抽象メソッドを実装できない場合は、クラスを抽象クラスとして定義する必要があります.
    インタフェースのインスタンスの作成は許可されませんが、インタフェースを実装するインスタンスを指すインタフェースタイプの変数を定義できます.
    1つのクラスは1つのクラスしか継承できませんが、複数のインタフェースを継承できます.
    実装インタフェースのフォーマットは、修飾子classクラス名extends親クラスimplements複数のインタフェース{実装方法
    }
    インタフェースはタイプとしてインタフェースを参照タイプとして使用し、インタフェースを実装するクラスのインスタンスはすべてインタフェースタイプの変数に格納することができ、これらの変数がクラスで実装されたインタフェースにアクセスできる方法によって、Javaランタイムシステムはどのクラスで使用すべきかを動的に決定し、実際には対応する実装クラスを呼び出す方法である.