JavaSE-インタフェース-基礎知識点整理

9029 ワード

/*インタフェースは複数のクラスの共通仕様であり、参照データ型である
Java 9でインタフェースに含めることができる内容:1.定数2.抽象的な方法3.既定の方法4.静的方法5.プライベートメソッド
public abstractはインタフェースの固定修飾子として選択的に方法の中の3要素を省略して任意に定義することができる
1.インタフェースクラスは直接使用することができず、そのインタフェースを実現するためにもう一つの「実装クラス」が必要である.インタフェースの実装クラスは、インタフェース内のすべての抽象的な方法を上書きしなければならない.インプリメンテーションクラスのオブジェクトの作成
Java 8からインタフェースにデフォルトメソッドpublic default戻り値タイプメソッド名(){}があります.インタフェースのアップグレードの問題を解決するためのデフォルトの方法は、クラスの書き換えを実現できます.
Java 8からインタフェースに静的メソッドpublic staticメソッド名(){メソッドボディ};インタフェース実装クラスを介してインタフェース内の静的メソッドを呼び出すことはできませんインタフェース名を介してインタフェース静的メソッドを呼び出す
インタフェースプライベートメソッド:1つのメソッドを抽出し、2つのインタフェースメソッド間の重複コード問題を解決する.通常のプライベートメソッド:デフォルトメソッドの重複を解決します.静的プライベートメソッド静的プライベートメソッド静的メソッドの重複を解決する
インタフェース定数:public static final int num=10;final:変更不可なので:インタフェース定数を割り当てると、インタフェース名を使用して定数名を直接呼び出して完全に大文字にし、下線で区切る*/
package learning.day5.Interface;

public interface MyInterfaceAbs {

    public static final int NUM_123 = 10;//    

    public abstract void methodAbs();//        

    public default void methodDefault() {
        System.out.println( "          !" );
    }

    public static void methodStatic() {
        System.out.println( "         !" );
    }

    private void methodDefaultCommon() {
        System.out.println( "           " );
    }

    private static void methodStaticCommon() {
        System.out.println( "           !" );
    }
}
package learning.day5.Interface;

public class MyInterface implements MyInterfaceAbs {

    @Override
    public void methodAbs() {
        System.out.println( "       !" );
    }//          

    @Override
    public void methodDefault() {
        System.out.println( "          !" );
    }//          
}

package learning.day5.Interface;

public class MyInterfaceMain {
    public static void main(String[] args) {

        MyInterface inter = new MyInterface();//      new  

        inter.methodAbs();//                   

        inter.methodDefault();//         

        MyInterfaceAbs.methodStatic();//         

        int num = MyInterfaceAbs.NUM_123;//      
        System.out.println( num );
    }
}