介面1

白茶小霸王發表於2020-10-19
package demo20201018介面;
/*
介面就是多個類的公共規範
介面是一種引用型別,最重要的內容就是其中:抽象方法

如何定義一個介面的格式:
public interface 介面名稱{
    //介面內容
}
備註
Java7
1.常量
2.抽象方法
Java8
3.預設方法
4.靜態方法
Java9
5.私有方法

介面的使用步驟
1.介面不能直接使用,必須有一個“實現類”來“實現”該介面
格式
public class 實現類名稱 imolements 介面名稱{
//。。。。。。。。
}
2.介面的實現類必須覆蓋重寫(實現)介面中的所有抽象方法
實現:去掉abstract關鍵字,加上方法體大括號
3.建立實現類的物件,進行使用

注意事項:
如果實現類並沒有覆蓋重寫介面中所有的抽象方法,那麼這個實現類自己就必須是抽象類
*/
public class demoInterface01 {
    public static void main(String[] args) {
        MyInterfaceAbstractImp m = new MyInterfaceAbstractImp();
        m.method1();
    }
}


package demo20201018介面;
/*
1.介面預設方法,可以通過介面實現類物件,直接呼叫
2.介面預設方法,可以被介面實現類進行覆蓋重寫
*/
public class demoInterface02 {
    public static void main(String[] args) {
        //建立了實現類物件
        MyInterfaceDefaultA a = new MyInterfaceDefaultA();
        a.methodAbs();//呼叫抽象方法,實際執行的是右側實現類  實現了抽象方法AAA
        //呼叫預設方法,如果實現類中沒有,會向上找介面
        a.methodDefault();//新新增的預設方法

        MyInterfaceDefaultB b = new MyInterfaceDefaultB();
        b.methodAbs();//實現了抽象方法BBB
        b.methodDefault();//實現了B覆蓋重寫介面的預設方法
    }
}


package demo20201018介面;

/*
在任何版本中的Java中,介面都能定義抽象方法
格式:
public abstract 返回值型別 方法名稱(引數列表);

注意事項:
1.介面當中的抽象方法,修飾符必須是兩個固定的關鍵字:public abstract
2.這兩個關鍵字修飾符,可以選擇性省略
3,方法三要素,可以隨便定義
*/
public interface MyInterfaceAbstract {

/*public default void we(){
    System.out.println(666);
} */
    public abstract void method1();


}


package demo20201018介面;

public class MyInterfaceAbstractImp implements MyInterfaceAbstract {
    @Override
    public void method1() {
        System.out.println("方法一");
    }
}


package demo20201018介面;
/*
從Java8開始:介面裡允許定義預設方法
格式:
public default 返回值型別 方法名稱(引數列表){
    方法體
}
備註:介面當中的預設方法,可以解決介面升級問題
*/
public interface MyInterfaceDefault {

    //抽象方法
    public abstract void methodAbs();

    //新新增了一個抽象方法
    //public abstract void methodAbs2();
    public default void methodDefault(){
        System.out.println("新新增的預設方法");
    }
}


package demo20201018介面;

public class MyInterfaceDefaultA implements MyInterfaceDefault {
    @Override
    public void methodAbs() {
        System.out.println("實現了抽象方法AAA");
    }


}


package demo20201018介面;

public class MyInterfaceDefaultB implements MyInterfaceDefault {
    @Override
    public void methodAbs() {
        System.out.println("實現了抽象方法BBB");
    }

    @Override
    public void methodDefault() {
        System.out.println("實現了B覆蓋重寫介面的預設方法");
    }
}

相關文章