关于类、抽象类和接口的继承关系
關于類、抽象類和接口的繼承關系
Java類的繼承是單繼承的,就是一個類只能繼承一個類,但是可以通過接口來實現多繼承,一個類可以實現多個接口。通過這種方式,Java類就可以實現多繼承的關系。但是在繼承類和實現接口的時候,存在多方法的實現,下面就是介紹關于多繼承的方法實現問題。
?
一、類和抽象類
當實現類Impl繼承一個抽象類Abstract,該實現類Impl可以不用實現抽象類Abstract中的所有方法,但是必須實現抽象類中的所有抽象方法。
?
二、類和接口
當實現類Impl直接實現接口Interface,那么該實現類Impl必須是想接口Interface里面的所有接口方法。
?
三、抽象類和接口
當抽象類Abstract實現接口Interface,抽象類可以實現接口中的部分接口方法,也可以完全不實現任何接口方法。
理解:因為抽象類的功能類似接口,都是給某種行為或者流程提供統一的抽象的規范,兩者的目的都不是去具體實現具體操作,具體的操作需要不同實現類去實現。
?
四、實現類繼承首相類然后實現接口
上面都是只設計兩者之間關系的情況,當涉及三者之間關系的時候,情況稍微復雜,但是當你理解實現類、抽象類和接口的存在的目的和意義也就很容易理解
實現類Impl extends 抽象類Abstract implements 接口Interface(注:下面所有情況中抽象類Abstract都不用顯式實現接口Interface:即不需要在抽象類Abstract中寫Abstract implements Interface,只要方法是實現即可<即:方法的訪問權限,修飾詞,返回參數,參數列表一樣>)
1、 如果抽象類Abstract實現了Interface中的部分方法,那么實現類Impl需要實現抽象類Abstract沒有實現Interface中的接口。
例:Interface有三個方法
public void getUp();
public void washFace();
public void eatBreakfast();
Abstract只實現了Interface中的一個方法getUp(),那么Impl就需要實現剩下的兩個方法washFace()和eatBreakfast()
2、 如果抽象類Abstract沒有實現Interface中的任何方法(當然這種情況在工作中很少遇到,這樣Abstract就失去了存在的意義),那么Impl就必須實現接口中的所有方法。
3、 如果抽象類Abstract實現Interface中的所有方法,那么實現類Impl就可以選擇性的實現接口Interface中需要的方法
?
五、實體類繼承實體類然后實現接口
實體類AImpl extends 實體類BImpl implements 接口Interface
情況和上面類似(這只是實體類,抽象類和接口關系的一種變化形式)
說明:BImpl不用顯式實現接口Interface,只要方法是實現接口Interface的方法即可
?
總結:抽象類和接口的功能是給相似行為或者功能提供統一規范,不用具體實現某種操作,實現類是實現具體行為和功能的真正載體。實體類無論是繼承還是實現接口,或者是多重繼承,只要上層沒有被實現的接口或者抽象方法都必須被實現。
轉載于:https://www.cnblogs.com/yanzige/p/8328330.html
總結
以上是生活随笔為你收集整理的关于类、抽象类和接口的继承关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电信营业厅电话(中国电信网上营业厅)
- 下一篇: 微信小程序正确的异步request请求,