Java練習>インタフェース>>親クラスを継承し、複数のインタフェースを実装

3531 ワード

インタフェースを使用する場合は、次の点に注意してください.
1.インタフェースは、静的コードブロックまたは構築方法がない.
2.1つのクラスの直接親は一意ですが、1つのクラスで複数のインタフェースを同時に実装できます.
フォーマット:public class MyInterface implements MyInterfaceA,MyInterfaceAB{
//すべての抽象メソッドの上書き
    }
3.実装クラスが実装する複数のインタフェースのうち、重複する抽象的な方法がある場合は、1つの書き換えを上書きするだけでよい.
4.実装クラスがすべてのインタフェースのすべての抽象メソッドを上書きしていない場合、実装クラスは抽象クラスである必要があります.
5.実装クラスが実装する複数のインタフェースのうち、重複するデフォルトメソッドが存在する場合、実装クラスは競合するデフォルトメソッドを上書きしなければならない.
6.クラスが直接親のメソッドとインタフェースのデフォルトメソッドと衝突した場合、親のメソッドを優先します.
例は次のとおりです.
インタフェースクラスAを作成します.
package JieKou;

//    A

public interface MyInterfaceA {

    //    !           
//    static {
//
//    }

    //          
//    public MyInterfaceA(){
//
//    }

    public abstract void methodA(); //     

    public abstract void methodAbs(); //     

    public abstract void methodAbsA(); //     

    public default void menthodDefault(){
        System.out.println("    AAA");
    }
}

インタフェースクラスBを作成します.
package JieKou;

//    B

public interface MyInterfaceB {

    //    !           
//    static {
//
//    }

    //          
//    public MyInterfaceA(){
//
//    }

    public abstract void methodB(); //     

    public abstract void methodAbs(); //     

    public default void menthodDefault(){
        System.out.println("    BBB");
    }
}

インプリメンテーションクラスimplを作成するには:
package JieKou;

//    impl

//                       ,              
//            ,               。  :     
public abstract class MyInterfaceImpl implements MyInterfaceA,MyInterfaceB {
    @Override
    public void methodA() {
        System.out.println("     A  ");
    }

    @Override
    public void methodB() {
        System.out.println("     B  ");
    }

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

//                   ,         ,                      。
    @Override
    public void menthodDefault() {
        System.out.println("                     ");
    }
}

インタフェースクラスMyInterfaceを作成するには:
package JieKou;

//   MyInterface

public interface MyInterface {
    public default void method(){
        System.out.println("       ");
    }
}

親Fuを作成するには:
package JieKou;

//  

public class Fu {
    public void method(){
        System.out.println("    ");
    }
}

親を使用するサブクラスを作成するには、次の手順に従います.
package JieKou;

//                 
public class Zi extends Fu implements MyInterface{

}

実用クラスとサブクラスを使用するには、次の手順に従います.
package JieKou;

public class Demo01Interface {
    public static void main(String[] args) {
//                      ,          ,     ,          。
        Zi zi = new Zi();
        zi.method();
        System.out.println("============================================");

        MyInterfaceImpl impl = new MyInterfaceImpl() {
            @Override
            public void methodAbsA() {
                System.out.println("  MyInterfaceImpl    :   ,               ");
            }
        };

        impl.methodA();
        impl.methodB();
        impl.menthodDefault();
        impl.methodAbsA();

    }
}

以上のコードの実行結果:
    
============================================
     A  
     B  
                     
  MyInterfaceImpl    :   ,