實現多介面和介面的多繼承---Java
阿新 • • 發佈:2020-08-11
/*使用介面的時候,需要注意:
* 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"); } }
packagecn.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() { } }