關於類、抽象類和接口的繼承關係

關於類、抽象類和接口的繼承關係spa

Java類的繼承是單繼承的,就是一個類只能繼承一個類,可是能夠經過接口來實現多繼承,一個類能夠實現多個接口。經過這種方式,Java類就能夠實現多繼承的關係。可是在繼承類和實現接口的時候,存在多方法的實現,下面就是介紹關於多繼承的方法實現問題。設計

 

1、類和抽象類繼承

當實現類Impl繼承一個抽象類Abstract,該實現類Impl能夠不用實現抽象類Abstract中的全部方法,可是必須實現抽象類中的全部抽象方法接口

 

2、類和接口get

當實現類Impl直接實現接口Interface,那麼該實現類Impl必須是想接口Interface裏面的全部接口方法ast

 

3、抽象類和接口權限

當抽象類Abstract實現接口Interface,抽象類能夠實現接口中的部分接口方法,也能夠徹底不實現任何接口方法。方法

理解:由於抽象類的功能相似接口,都是給某種行爲或者流程提供統一的抽象的規範,二者的目的都不是去具體實現具體操做,具體的操做須要不一樣實現類去實現。im

 

4、實現類繼承首相類而後實現接口總結

上面都是隻設計二者之間關係的狀況,當涉及三者之間關係的時候,狀況稍微複雜,可是當你理解實現類、抽象類和接口的存在的目的和意義也就很容易理解

實現類Impl extends 抽象類Abstract implements 接口Interface(注:下面全部狀況中抽象類Abstract都不用顯式實現接口Interface:即不須要在抽象類Abstract中寫Abstract implements Interface,只要方法是實現便可<即:方法的訪問權限,修飾詞,返回參數,參數列表同樣>)

一、 若是抽象類Abstract實現了Interface中的部分方法,那麼實現類Impl須要實現抽象類Abstract沒有實現Interface中的接口。

例:Interface有三個方法

  public void getUp();

  public void washFace();

  public void eatBreakfast();

Abstract只實現了Interface中的一個方法getUp(),那麼Impl就須要實現剩下的兩個方法washFace()和eatBreakfast()

二、 若是抽象類Abstract沒有實現Interface中的任何方法(固然這種狀況在工做中不多遇到,這樣Abstract就失去了存在的意義),那麼Impl就必須實現接口中的全部方法。

三、 若是抽象類Abstract實現Interface中的全部方法,那麼實現類Impl就能夠選擇性的實現接口Interface中須要的方法

 

5、實體類繼承實體類而後實現接口

實體類AImpl extends 實體類BImpl implements 接口Interface

狀況和上面相似(這只是實體類,抽象類和接口關係的一種變化形式)

說明:BImpl不用顯式實現接口Interface,只要方法是實現接口Interface的方法便可

 

總結:抽象類和接口的功能是給類似行爲或者功能提供統一規範,不用具體實現某種操做,實現類是實現具體行爲和功能的真正載體。實體類不管是繼承仍是實現接口,或者是多重繼承,只要上層沒有被實現的接口或者抽象方法都必須被實現。

相關文章
相關標籤/搜索