1. 程式人生 > 其它 >java繼承與多型-介面的學習

java繼承與多型-介面的學習

介面即使多個類的公共規範。
介面時一種引用資料型別,最重要的內容就是其中的:抽象方法。
如何定義一個介面的格式:
public interfa 介面名稱{
//介面內容
}
備註:換成了關鍵字interface之後,編譯生成的位元組碼檔案任然是:Java—>.class。
如果是Java 7 那麼介面中可以包含的內容有
1.常量
2.抽象方法
如果時Java 8,還可以包含
3.預設方法
4.靜態方法
5.私有方法
介面使用步驟:1.介面不能直接使用,必須有一個“實現類”來”實現“該介面。
格式:public class 實現類名稱implement 介面名稱{
//。。。
}
2.介面的實現類必須覆蓋重寫(實現)介面中所有的抽象方法。

實現:去掉abstr關鍵詞,加上方法體大括號。
3.建立實現類的物件進行使用。
注意事項:如果實現類並沒有覆蓋重寫介面中所有抽象方法,那麼這個實現類自己就必須時抽象類。
原因;繼承介面之後將介面中所有的抽象方法都繼承下來了,抽象方法所在的類就是抽象類。

public class demo01Interface {
    public static void main(String[] args) {
        //MyInterfaceAbstract myInterfaceAbstract=new MyInterfaceAbstract();錯誤,不能直接new介面物件使用
        //需要建立實現類的物件使用
MyInterfaceAbstrctlmpl impl=new MyInterfaceAbstrctlmpl(); impl.methodAbs1(); impl.methodAbs2(); impl.methidAbs3(); impl.methodAbs4(); } }

在任何版本的Java中,介面都能定義抽象方法:
public abstract 返回值型別 方法名稱(引數列表)
注意事項:1.介面當中的抽象方法,修飾符必須時兩個固定的關鍵字:publicabstr
2.這兩個關鍵字修飾符,可以選擇性的省略。

3.方法三要素,可以隨意定義。
定義一個介面名為MyInterfaceAbstract

public interface MyInterfaceAbstract {
    public abstract void methodAbs1();//這是一個抽象方法,當我們省略public或者abstract或者都省略都不會出錯
    public abstract void methodAbs2();
    public abstract void methidAbs3();
    public abstract void methodAbs4();
}

定義一個類來實現介面方法重寫

public class MyInterfaceAbstrctlmpl implements MyInterfaceAbstract{
    @Override
    public void methodAbs1() {
        System.out.println("這是第一個方法");
    }
    @Override
    public void methodAbs2() {
        System.out.println("這是第二個方法");
    }
    @Override
    public void methidAbs3() {
        System.out.println("這是第三個方法");
    }
    @Override
    public void methodAbs4() {
        System.out.println("這是第四個方法");
    }
}

執行結果:
這是第一個方法
這是第二個方法
這是第三個方法
這是第四個方法

介面靜態方法的使用

注意事項:不能通過介面名稱實現類的物件來呼叫介面當中的靜態方法。
正確用法:通過介面名稱直接使用其中的靜態方法。
格式:介面名稱.靜態方法名(引數);
靜態跟類有關係,所以不需要建立物件。

public class demo01 {
    public static void main(String[] args) {
        MyInterfaceStatic imp=new MyinterfaceImpl();//靜態跟類有關係所以不用建立物件。
        //imp.methodStatic():錯誤寫法
        MyInterfaceStatic.methodStatic();

    }
}

從Java 8開始,介面當中允許定義靜態方法。

  • 格式:public static 返回值 方法名稱(引數列表){
    方法體
    }
    提示:就是將abstract或者default換成static即可
    建立介面MyInterfaceStatic
public interface MyInterfaceStatic {
    public static void methodStatic(){
        System.out.println("這是一個靜態方法!");
    }
}

建立一個實現類MyinterfaceImpl

public class MyinterfaceImpl implements MyInterfaceStatic{
}