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