1. 程式人生 > >java面向對象(接口)

java面向對象(接口)

跟著 ros 類型 soft 面向 final ports 只需要 多繼承

一.接口的概念

接口是功能的集合,

接口只描述所應該具備的方法,並沒有具體實現,具體的實現由接口的實現類(相當於接口的子類)來完成

將功能的定義與實現分離,優化了程序設計

二.接口的定義

接口定義時需要使用interface關鍵字

public interface 接口名 {
 抽象方法1;
 抽象方法2;
 抽象方法3;
}

使用interface代替了原來的class,其他步驟與定義類相同:

接口中的方法均為公共訪問的抽象方法

接口中無法定義普通的成員變量

三.類實現接口

類與接口的關系為實現關系,即類實現接口。實現的動作類似繼承,只是關鍵字不同,實現使用implements

classimplements 接口 {
    重寫接口中方法
} 

在類實現接口後,該類就會將接口中的抽象方法繼承過來,此時該類需要重寫該抽象方法,完成具體的邏輯。

接口中定義功能,當需要具有該功能時,可以讓類實現該接口,只聲明了應該具備該方法,是功能的聲明。

在具體實現類中重寫方法,實現功能,是方法的具體實現。

四.接口與類的相似點

一個接口可以有多個方法。

接口文件保存在 .java 結尾的文件中,文件名使用接口名。

接口的字節碼文件保存在 .class 結尾的文件中。

接口相應的字節碼文件必須在與包名稱相匹配的目錄結構中。

五.接口與類的區別

接口不能用於實例化對象。

接口沒有構造方法。

接口中所有的方法必須是抽象方法。

接口不能包含成員變量,除了 static 和 final 變量。

接口不是被類繼承了,而是要被類實現。

接口支持多繼承。

六.接口的特性

接口中每一個方法也是隱式抽象的,接口中的方法會被隱式的指定為 public abstract(只能是 public abstract,其他修飾符都會報錯)。

接口中可以含有變量,但是接口中的變量會被隱式的指定為 public static final 變量(並且只能是 public,用 private 修飾會報編譯錯誤)。

接口中的方法是不能在接口中實現的,只能由實現接口的類來實現接口中的方法。

七.抽象類和接口的區別

1. 抽象類中的方法可以有方法體,就是能實現方法的具體功能,但是接口中的方法不行。

2. 抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是 public static final 類型的。

3. 接口中不能含有靜態代碼塊以及靜態方法(用 static 修飾的方法),而抽象類是可以有靜態代碼塊和靜態方法。

4. 一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。

八.接口的繼承

一個接口能繼承另一個接口,和類之間的繼承方式比較相似。接口的繼承使用extends關鍵字,子接口繼承父接口的方法。

class Fu {
    public void show(){}
}
interface Inter {
    pulbic abstract void show1();
}
class Zi extends Fu implements Inter {
    public void show1() {
    }
}

九.接口的多繼承

在Java中,類的多繼承是不合法,但接口允許多繼承。

在接口的多繼承中extends關鍵字只需要使用一次,在其後跟著繼承接口。 如下所示:

public interface Hockey extends Sports, Event

java面向對象(接口)