繼承和派生都是java重要知識(shí)點(diǎn),繼承是java面向?qū)ο缶幊碳夹g(shù)的一塊基石,因?yàn)樗试S創(chuàng)建分等級(jí)層次的類(lèi)。而在java的繼承關(guān)系中,新的類(lèi)稱(chēng)為子類(lèi),也叫派生類(lèi)。那java中繼承和派生的區(qū)別是什么?下面來(lái)我們就來(lái)給大家講解一下。
1.繼承
繼承,顧名思義,就是把已經(jīng)有的拿過(guò)來(lái)歸為己用,java中的繼承也不例外。舉個(gè)例子,假如現(xiàn)在有這樣一個(gè)需求,讓我們寫(xiě)一個(gè)關(guān)于狗的Dog類(lèi),Dog類(lèi)中有狗的名字、年齡,還有狗的兩種行為,也就是這個(gè)類(lèi)的兩種方法,分別是run(跑)方法和bark(犬吠)方法,那么我們就可以這樣寫(xiě):
public class Dog { String name; int age; public void run() { System.out.println("狗在跑!"); } public void bark() { System.out.println("狗在叫!"); } }
很好,我們實(shí)現(xiàn)了Dog這個(gè)類(lèi),那么現(xiàn)在如果讓我們寫(xiě)一個(gè)拉布拉多類(lèi)(狗的一種)呢?顯然,拉布拉多也具有名字、年齡、跑、叫的行為,那么如果我們從頭開(kāi)始寫(xiě)拉布拉多這個(gè)類(lèi),就太麻煩了,我們還要重新寫(xiě)一遍剛才寫(xiě)的東西,這個(gè)時(shí)候,就要用到繼承,所以我們可以這樣去寫(xiě):
public class Labuladuo extends Dog {}
extends是繼承的關(guān)鍵字,通過(guò)extends,我們實(shí)現(xiàn)了讓拉布拉多這個(gè)類(lèi)繼承了Dog這個(gè)類(lèi),這不難理解,畢竟,拉布拉多就是狗的一種嘛?,F(xiàn)在,由于我們的訪問(wèn)權(quán)限設(shè)置的都是public,那么父類(lèi)具有的東西子類(lèi)也有,于是,拉布拉多也有了名字、年齡兩個(gè)成員變量,有了跑和叫兩個(gè)方法。
2. 派生
顧名思義,派生是在繼承了一些東西的基礎(chǔ)上增添了新的東西,派生是依存于繼承的,子類(lèi)在拿來(lái)父類(lèi)的東西去使用的同時(shí),可以增添新的東西或者對(duì)繼承來(lái)的東西進(jìn)行覆寫(xiě)讓其適用于子類(lèi)。例如,我們現(xiàn)在在繼承了Dog類(lèi)的拉布拉多類(lèi)中新增一個(gè)給盲人導(dǎo)盲的方法daoMang(),那么,我們僅僅用子類(lèi)對(duì)象才能調(diào)用這個(gè)方法,而用父類(lèi)對(duì)象無(wú)法調(diào)用,因?yàn)檫@個(gè)方法是子類(lèi)拉布拉多類(lèi)獨(dú)有的,也就是說(shuō),這是從父類(lèi)的基礎(chǔ)上拓展出來(lái)的方法,也就是派生。此時(shí)的拉布拉多,既可以使用父類(lèi)Dog類(lèi)的所有狗都共有的run和bark方法,也同時(shí)具有了Dog類(lèi)的name和age的狗的基本屬性。
public class Labuladuo extends Dog { public void daoMang() { System.out.println("我會(huì)導(dǎo)盲!"); } }
其實(shí)派生是在繼承了一些東西的基礎(chǔ)上增添了新的東西,派生是依存于繼承的,并且java的繼承關(guān)系中,新的類(lèi)稱(chēng)是子類(lèi),也就是派生類(lèi)。最后大家如果想要了解更多java初識(shí)知識(shí),敬請(qǐng)關(guān)注賦能網(wǎng)。
本文鏈接:
本文章“java中繼承和派生的區(qū)別是什么?實(shí)例分析”已幫助 80 人
免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識(shí)產(chǎn)權(quán)侵權(quán)的法律責(zé)任!
本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開(kāi)班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢熱線:4008-569-579