1. 程式人生 > 實用技巧 >實現多介面和介面的多繼承---Java

實現多介面和介面的多繼承---Java

/*使用介面的時候,需要注意:
* 1.介面是沒有靜態程式碼塊或者構造方法的
* 2.一個類的直接父類只有一個,但是一個類可以同時實現多個介面;
* 格式:
* public class MyInterfaceA implements MyInterfaceA, MyInterfaceB{
* //覆蓋重寫所有抽象方法
* }
*
* 3. 如果實現類所實現的多個介面當中,存在重複的抽象方法,那麼只需要覆蓋重寫一次即可
*
* 4.如果實現類沒有覆蓋重寫所有介面的所有抽象方法,那麼實現類就必須是一個抽象類
*
* 5. 如果實現類實現的多個介面當中,存在重複的預設方法,那麼實現類一定要對衝突的預設方法實現重寫
*
* 6. 一個類如果直接父類的方法,和介面中預設的方法起了衝突,優先使用父類當中的方法*/


public interface MyInterfaceA {
    //錯誤寫法:介面不能有靜態程式碼塊
//    static {
//
//    }

    //錯誤寫法:介面不能有構造方法
//    public MyInterfaceA(){
//
//    }
    public abstract void methodA();

    public abstract void methodAbs();

    public default void methodDefault(){
        System.out.println("預設方法AAA");
    }
}

package
cn.itcast.day10.demo02; public interface MyInterfaceB {
public abstract void methodB(); public abstract void methodAbs(); public default void methodDefault() { System.out.println("預設方法BBB"); } }

/*
* 1. 類與類之間是單繼承的,直接父類只有一個
* 2. 類與介面之間是多實現的,一個類可以實現多個介面
* 3. 介面與介面之間是多繼承的
*
* 4. 多個父介面中的抽象方法如果衝突,沒關係

* 多個父介面中的預設方法如果衝突,有關係
* */
public interface MyInterfaceA<pu> {
    public abstract void methodA();

    public abstract void methodCommon();

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

}


public interface MyInterfaceB {
    public abstract void methodB();

    public abstract void methodCommon();

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

}

/*
* 這個子介面中有幾個方法?
* 4個方法{
*   methodA、methodB、methodCommon、method
* }
* */
public interface MyInterface extends MyInterfaceA, MyInterfaceB{

    public abstract void method();


    @Override
    default void methodDefault() {

    }

}

public class MyInterfaceImpl implements MyInterface{
    @Override
    public void method() {

    }

    @Override
    public void methodA() {

    }

    @Override
    public void methodB() {

    }

    @Override
    public void methodCommon() {

    }
}