一、什麼是接口:
官方定義:Java接口是一系列方法的聲明,是一些方法特徵的集合,一個接口只有方法的特徵沒有方法的實現,因此這些方法可以在不同的地方被不同的類實現,而這些實現可以具有不同的行爲(功能)。
接口不是類,而是對類的一組需求的描述,這些類要遵從接口描述的同一格式進行定義。服務提供商經常這樣說:“如果類遵從某個特定的接口,那麼就履行這項服務”。
舉例:
interface Instrument{
int VALUE = 5;//static & final
void play(Note n); //automatically public
void adjust();
}
特點:
1、所有的變量類型均是且只能是public final static
2、所有的方法類型均是且只能是public,只聲明方法名,沒有方法的實現。上例中方法沒有顯示的註明是public,但是會默認爲public
二、接口的使用
使用場景:
1)需要定義某種規範時;
接口的使用:
1、接口只能繼承接口,且允許多繼承接口
2、類只能實現一個接口或多個接口,且在實現接口時,需要實現接口中聲明的所有抽象的方法;只有抽象類可以只實現接口中的部分方法,接口中其餘沒實現的方法在抽象類中仍然聲明爲抽象方法。
三、抽象類
抽象類:包含抽象方法的類叫做抽象類。
舉例:
abstract class Instrument(){
private int i;
public abstract void play(Note n);
public String what(){return "Instrument"};
public abstract void adjust(){};
}
抽象類的使用:
1、抽象類不能直接new爲對象,如果想創建該類的對象,必須爲積累中所有的抽象方法提供定義。
抽象類的使用場景:
可以作爲有用的重構工具,因爲他們使得我們可以很容易的將公共方法沿着繼承層次結構向上移動
三、抽象類和接口比較
抽象類和接口中都包含抽象方法,但接口中不能包含實例域和方法的實現,可以將接口看做沒有實例域的抽象類。兩者的區別可以參考:
說明:該圖轉自https://blog.csdn.net/laotianv5/article/details/81662280
參考文獻:
《java編程思想》