Java 面向對象-接口①

在抽象類中,抽象方法本質上是定義接口規範:

即規定高層類的接口,從而保證所有子類都有相同的接口實現。

這樣,多態就能發揮出威力。如果一個抽象類沒有字段,所有方法全部都是抽象方法:

abstract class Person {
    public abstract void run();
    public abstract String getName();
}

就可以把該抽象類改寫爲接口:interface

在Java中,使用interface可以聲明一個接口:

interface Person {
    void run();
    String getName();
}

所謂interface,就是比抽象類還要抽象的純抽象接口,因爲它連字段都不能有。因爲接口定義的所有方法默認都是public abstract的,所以這兩個修飾符不需要寫出來(寫不寫效果都一樣)。

當一個具體的class去實現一個interface時,需要使用implements關鍵字。舉個例子:

class Student implements Person {
    private String name;

    public Student(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        System.out.println(this.name + " run");
    }

    @Override
    public String getName() {
        return this.name;
    }
}

我們知道,在Java中,一個類只能繼承自另一個類,不能從多個類繼承。但是,一個類可以實現多個interface,例如:

class Student implements Person, Hello { // 實現了兩個interface
    ...
}

Java的接口特指interface的定義,表示一個接口類型和一組方法簽名,而編程接口泛指接口規範,如方法簽名,數據格式,網絡協議等。

抽象類和接口的對比如下:

  abstract class interface  
繼承 只能extends一個class 可以implements多個interface
字段 可以定義實例字段 不能定義實例字段
抽象方法 可以定義抽象方法 可以定義抽象方法
非抽象方法 可以定義非抽象方法 可以定義default方法

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章