Java的三個(gè)大招之二:繼承

繼承,從世俗的角度來解釋便是子女得到父輩的財(cái)產(chǎn)或物品。程序中,繼承是指兩個(gè)類的從屬關(guān)系,它可以使多種事物之間形成一種關(guān)系體系。例如貴賓和泰迪都是屬于寵物犬,程序中便可以描述為貴賓和泰迪繼承自動物。這篇要文章主要理清三個(gè)問題:

  1. 繼承的概念是什么?
  2. 繼承中如何重寫父類的方法?
  3. 關(guān)鍵字super如何使用?

先看第一個(gè)問題,在Java中類的繼承是指在一個(gè)現(xiàn)有類的基礎(chǔ)上去構(gòu)建一個(gè)新的類,構(gòu)建出來的類被稱作子類,現(xiàn)有的類被稱作父類,子類會自動擁有父類所有課繼承的屬性和方法。同時(shí),程序中通常用extends關(guān)鍵字來聲明一個(gè)繼承另一個(gè)類,下面就通過一個(gè)案例來演示:

繼承的基本使用.JPG

上面代碼的運(yùn)行結(jié)果是“動物的叫聲”和“我的名字叫貴賓”。其中Dog類通過extends繼承了Animal類,這樣Dog類便是Animal類的子類。從運(yùn)行結(jié)果可以看出,子類雖然沒有定義name屬性和shout方法,但是卻能訪問這兩個(gè)成員,這也就說明了子類在繼承父類的時(shí)候,會自動擁有父類的所有成員。但也有一些問題需要注意下:

  1. Java中,類只支持單繼承不允許多重繼承,也就是說一個(gè)類只能有一個(gè)父類。
  2. 多個(gè)類可以繼承同一個(gè)父類。
  3. 可以多層繼承,即一個(gè)類的父類可以去繼承另外的父類。
  4. Java中的子列和父類只是一種相對概念。

接下來看第二個(gè)問題,繼承中重寫父類方法是怎么回事。
我們知道繼承關(guān)系中,子類會自動繼承父類中定義的方法,但有時(shí)在子類需要對繼承的方法進(jìn)行修改,即重寫父類方法。好比父親的理想,如果兒子不喜歡,可以去追求自己的夢想。
上面代碼中,Dog類繼承了Animal類中的shout方法,調(diào)用時(shí)會打印“動物的叫聲”,這明顯不是描述一種具體動物的叫聲,Dog發(fā)出的叫聲應(yīng)該是“汪汪汪。。?!睘榱私鉀Q這個(gè)問題,可以在Dog類中重寫父類Animal的shout()方法,具體代碼如下:

繼承中重寫父類方法.JPG

運(yùn)行結(jié)果是“汪汪汪。。?!薄倪\(yùn)行結(jié)果可以看到,在調(diào)用Dog類對象的shout方法是,只會調(diào)用子類重寫后的方法。

最后來看第三個(gè)問題,如何正確使用super關(guān)鍵字?
從上一個(gè)代碼中可以看到,當(dāng)子類重寫父類的方法后,子類對象將無法訪問父類被重寫的方法,為了解決這個(gè)問題,Java中專門提供一個(gè)super關(guān)鍵字用于訪問父類的成員。super的作用主要體現(xiàn)在兩個(gè)方面:

  1. 使用super關(guān)鍵字調(diào)用父類的成員變量和方法,格式如下
    super.成員變量;
    super.成員方法({參數(shù)1,參數(shù)2...});
  2. 使用super關(guān)鍵字調(diào)用父類構(gòu)造方法,格式如下
    super.({參數(shù)1,參數(shù)2...});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容