java API 文檔中的接口方法和抽象方法,有什麽區別?
對於面向對象編程來說,抽象是它的壹大特征之壹。可以通過兩種形式來體現OOP的抽象:接口和抽象類。這兩者有太多相似的地方,又有太多不同的地方。很多人在初學的時候會以為它們可以隨意互換使用,但是實際則不然。今天我們就壹起來學習壹下Java中的接口和抽象類。 抽象方法是壹種特殊的方法:它只有聲明,而沒有具體的實現。抽象方法的聲明格式為: abstract void fun(); 抽象方法必須用abstract關鍵字進行修飾。如果壹個類含有抽象方法,則稱這個類為抽象類,抽象類必須在類前用abstract關鍵字修飾。因為抽象類中含有無具體實現的方法,所以不能用抽象類創建對象。抽象類就是為了繼承而存在的,如果妳定義了壹個抽象類,卻不去繼承它,那麽等於白白創建了這個抽象類,因為妳不能用它來做任何事情。對於壹個父類,如果它的某個方法在父類中實現出來沒有任何意義,必須根據子類的實際需求來進行不同的實現,那麽就可以將這個方法聲明為abstract方法,此時這個類也就成為abstract類了。在軟件工程中,接口泛指供別人調用的方法或者函數。從這裏,我們可以體會到Java語言設計者的初衷,它是對行為的抽象。接口中可以含有變量和方法。但是要註意,接口中的變量會被隱式地指定為public static final變量(並且只能是public static final變量,用private修飾會報編譯錯誤),而方法會被隱式地指定為public abstract方法且只能是public abstract方法(用其他關鍵字,比如private、protected、static、 final等修飾會報編譯錯誤),並且接口中所有的方法不能有具體的實現,也就是說,接口中的方法必須都是抽象方法。從這裏可以隱約看出接口和抽象類的區別,接口是壹種極度抽象的類型,它比抽象類更加“抽象”,並且壹般情況下不在接口中定義變量。