1. 程式人生 > >Java類的繼承、介面的繼承和實現

Java類的繼承、介面的繼承和實現

Java的介面有繼承和實現兩個概念,介面可以繼承另一個介面,並獲得其父接口裡的所有方法和成員變數,介面也可以被一個類實現,實現介面的類需要實現介面及其父接口裡的所有抽象方法,怎麼理解呢?
(1)如果介面A繼承了介面B,那麼介面A就繼承了介面B的所有抽象方法;
(2)當一個類C實現介面A的時候,就需要實現介面A和介面B的全部抽象方法;(為什麼不說全部方法,要加上“抽象”這個定語?因為Jdk1.8增加了default關鍵字,允許接口裡有非抽象方法存在了,這些非抽象方法可以不被介面的實現類實現,這就是另外的問題了,這裡不詳細展開了,又興趣可以自行參看相關文件);

(3)當一個類D實現介面B的時候,只要實現介面B的抽象方法就好了。
這裡需要補充一下,為什麼類不可以多繼承,而介面卻可以? 類只能單繼承,也就是說一個類只能有一個父類,這是因為如果一個子類A繼承了父類B和父類C,當父類B和父類C中有一個名字相同並且引數列表相同的方法時,類A就會產生混淆,所以只能單繼承,單繼承有時候會限制類的擴充套件性;
介面卻可以實現多繼承,因為接口裡的方法都是抽象方法(default修飾的非抽象方法除外,這些非抽象方法會帶來混淆,這裡暫不討論),並沒有具體的方法體,只有介面的實現類提供了方法的實現,所以不會產生混淆。