JAvaの初認識インタフェース--

9110 ワード

抽象類特殊ないとこ----インタフェース
インタフェース時の多態の三大表現形式の一つであり、学習インタフェースの使用はSEにおける重点である.インタフェースの使い方は特に複雑ではありません.独自の定義キーワードinterfaceと独自のサブクラス実装キーワードimplementsがあります.
インタフェースの意味:
インタフェースを用いてjavaにおけるクラスとクラス間の単一継承の漏れを補完し,「マルチ継承」がクラス間のツリー関係を破壊しない単純性を実現する
実装理解結合、インタフェースは標準であり、実装インタフェースのクラスは、標準の実装者、すなわち実装クラスと呼ばれる.インタフェースを使用するクラスは、インタフェースの使用者、標準的な使用と定義と呼ばれ、実装者と使用者の両者を分離し、結合を解く.
キーワード:
  • インターフェース
  • を定義する
  • implementsはサブクラスによってインタフェース
  • を実現する
  • public static finalインタフェースにおける一意の属性修飾
  • public abstractインタフェースで抽象メソッドを定義する修飾
  • defaultインタフェースでは、デフォルトはデフォルトではなくpublic abstractであり、デフォルトメソッドは拡張メソッドと呼ばれ、
  • を区別することができる.
  • staticインタフェースでは、静的メソッド
  • を定義できます.
    インタフェースのメンバー:
    まずインタフェースにコンストラクションメソッドは存在せず,JVMがデフォルトで提供するコンストラクションメソッドも存在しないので注意が必要である.
    1.属性
    インタフェースには1つの属性しかありません.静的定数であるpublic static final修飾を公開します.finalであり、インタフェースには構造方法がないため、初期値を宣言して付与する必要があります.この1つの書き込み属性の形式しかないので、デフォルトで書くこともできます.
    2.メソッドインタフェースには3つのメソッド形式がある:まず最も重要な公開抽象メソッドであり、次いでdefaultの拡張メソッドとstaticの静的メソッドである.
    public abstract         ();
    //      , :
            ();
    
    dafault         (  ){
    //body
    }
    
    static         (  ){
    //body
    }
    
    

    3.内部インタフェースインタフェースでは、通常の内部クラス、抽象内部クラス、内部インタフェースを定義できます.
    interface A{
        int CONSTANT =233;
        void method1();
        static void method2(){
            System.out.println("staic method for A");
        }
        default void method3(){
            System.out.println("default method for A");
        }
    
        interface B{}
        class C{}
        abstract class D{}
    }
    

    インタフェースの実装と継承
    インタフェース間で複数の継承が可能で、キーワードextendsを使用
     interface A{}
     interface B{}
     interface C extends A,B{}
    

    1つのインプリメンテーションクラスは、インタフェースを複数実装し、親を継承できます.
    class D{}
    class MyClass extends D implements A,B,C{}
    

    クラス実装クラスインタフェースを実装する場合、インタフェース内のすべての公開抽象メソッドを実装する必要があります.書き換える際にpublicでnoteを修飾する必要があることに注意してください.書き換える方法の1つは、書き換える方法が書き換える方法よりもアクセス権が高いか等しいか、インタフェース内のデフォルトの書き方に注意してください.
    インプリメンテーションクラスは、インタフェースの拡張メソッドを継承し、書き換えを許可します.
    interface A{
        default void method3(){
            System.out.println("default method for A");
        }
    }
     class Animal implements A{
         @Override
         public void method3() {
             System.out.println("override method3()");
         }
     }
    

    実装下の静的メソッドは、継承下の静的メソッドと同様に使用されます.
    インプリメンテーションの呼び出し
    インタフェースはオブジェクトを作成できません.インタフェース参照を宣言できます.
    継承と実装の競合
    子クラスは親クラスを継承し,実装インタフェースの抽象メソッドと名前を変更し,親クラスのメソッドはsuperで呼び出すことができ,インタフェース内のメソッドは隠される(メソッドにはメソッド体がなく,意味がない)
    インタフェースは多重継承であり、重複メソッドが発生した場合、実装クラスは、実装インタフェースのレベルに応じて、どのメソッドを実装するか、どの拡張メソッドを呼び出すかを決定します注意:開発中に同じ機能を使用して同じメソッド名を異なるインタフェースに定義することは、開発ではタブーですので、インタフェース間継承方式を多く採用します(ps:Promise Sunにこの問題を指摘していただき、ありがとうございます)
    インタフェースと抽象クラスの違い:
  • 類似性:
  • インタフェースおよび抽象クラスは、他のクラスによって実装するためにインスタンス化されず、インタフェースは継承されるが、インタフェースおよび抽象クラスは、オブジェクト宣言として
  • を参照することができる.
  • インタフェースおよび抽象クラスはいずれも抽象メソッドを含み、実装インタフェースまたは継承抽象クラスの通常のサブクラスは、これらの抽象メソッド
  • を実装する必要がある.
  • 非同性:
  • 声明:
  • 抽象クラスabstractおよびclass宣言によって定義される
  • インタフェースはinterface宣言によって定義される
  • の構成:
  • 抽象クラスの構成
  • 初期コードブロック
  • 定数
  • 変数
  • 構造方法
  • 抽象メソッド
  • 一般的な方法
  • インタフェースは、以下のように構成することができる
  • グローバル定数
  • 公開抽象方法
  • default拡張方法
  • static静的方法

  • 継承//実現
  • サブクラスextendsを使用して抽象クラスを継承し、1つの抽象クラスは複数のインタフェース
  • を実現することができる.
  • サブクラスimplementsを使用してインタフェースを実装し、インタフェースは抽象クラスを継承できないが、インタフェースはマルチインタフェース
  • を継承することができる.
  • 抽象クラスとインタフェースのオブジェクトは、いずれもオブジェクトの多態性の向上を利用してインタフェースまたは抽象クラスのインスタンス化操作
  • を行う.

    インタフェースのコールバック
    予想:開発では、プログラマーごとに分離される開発プログラムは、まだ作成されていない別のインタフェースを呼び出す可能性があります(工事中...)
    デザインモードの学習はまだ行われていませんが、この開発者は詳細な説明があり、クリックして見ることができます.
    Demoは以下の通りです:(工事中...)