資源描述:
《java類(lèi)的繼承》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、繼承0本節(jié)學(xué)習(xí)目標(biāo):1.繼承的思想2.JAVA語(yǔ)言繼承的實(shí)現(xiàn)11、什么是繼承?面向?qū)ο蟪绦蛟O(shè)計(jì)中,可以在已有類(lèi)的基礎(chǔ)上定義新的類(lèi),而不需要把已有類(lèi)的內(nèi)容重新書(shū)寫(xiě)一遍,這就叫做繼承。已有的類(lèi)稱(chēng)為基類(lèi)或父類(lèi),在此基礎(chǔ)上建立的新類(lèi)稱(chēng)為派生類(lèi)或子類(lèi)。運(yùn)用繼承,父類(lèi)的特性不必再重新定義,就可以被其它類(lèi)繼承。繼承是面向?qū)ο缶幊碳夹g(shù)的一個(gè)重要機(jī)制。較好地解決了代碼重用問(wèn)題。任何一個(gè)類(lèi)都可以作為基類(lèi),從這個(gè)基類(lèi)可以派生出多個(gè)子類(lèi),這些派生的類(lèi)不僅具有基類(lèi)的特征,而且還可以定義自己獨(dú)有的特征。22、java語(yǔ)言中繼承的定義定義繼承的形式為:[類(lèi)修飾符]class類(lèi)名[e
2、xtends父類(lèi)]{類(lèi)體}兩個(gè)類(lèi)之間的繼承關(guān)系由extends關(guān)鍵字指明。33、舉例1classPerson{Stringname;privateintage;Person(Stringn,inta){name=n;age=a;}publicvoidprint(){System.out.println(“Mynameis”+name+”.”);}}classStudentextendsPerson{privatefloatjava,english;Student(Stringn,inta,floatj,floate){super(n,a);java=j
3、;english=e;}voidshow(){System.out.println(“javascoreis”+java+”.”);System.out.println(“engscoreis”+english+”.”);}}4舉例1(續(xù))classXuesheng{publicstaticvoidmain(String[]args){Students1=newStudent("tct1",18,67,89);s1.show();}}5◆如果子類(lèi)繼承了父類(lèi),則子類(lèi)自動(dòng)具有父類(lèi)的全部數(shù)據(jù)成員(數(shù)據(jù)結(jié)構(gòu))和成員方法(功能);但是,子類(lèi)對(duì)父類(lèi)成員的訪問(wèn)有所限
4、制;◆子類(lèi)可以定義自己的數(shù)據(jù)成員和成員函數(shù),同時(shí)也可以修改父類(lèi)的數(shù)據(jù)成員或重寫(xiě)父類(lèi)的方法;◆父類(lèi)、子類(lèi)都是“相對(duì)”的;◆在Java中,Object類(lèi)為特殊超類(lèi)或基類(lèi),所有的類(lèi)都直接或間接地繼承Object;◆Java語(yǔ)言只支持單繼承,如果要使用多繼承的機(jī)制,可以運(yùn)用將要講解的接口(interface)。4、關(guān)于JAVA語(yǔ)言繼承的幾點(diǎn)說(shuō)明:65、包括繼承的類(lèi)成員訪問(wèn)權(quán)限private:只允許該成員自身所屬的類(lèi)訪問(wèn),不允許子類(lèi)訪問(wèn);默認(rèn)修飾符:允許定義它的類(lèi)自身以及處于同一個(gè)包中的其它類(lèi)訪問(wèn)(包括子類(lèi));不允許不同包中的子類(lèi)訪問(wèn);protected:保護(hù)成
5、員,允許定義它的類(lèi)自身以及處于同一個(gè)包中的其它類(lèi)訪問(wèn)(包括子類(lèi));還允許不同包中的子類(lèi)訪問(wèn)。public:允許所有類(lèi)訪問(wèn)該成員;在同一包中,子類(lèi)可以訪問(wèn)父類(lèi)除私有成員(private修飾的)之外的所有屬性和方法。7被本類(lèi)訪問(wèn)被同一包中的其他類(lèi)訪問(wèn)被不同包中的其他類(lèi)訪問(wèn)被子類(lèi)訪問(wèn)(相同包)被子類(lèi)訪問(wèn)(不同包)Private允許不允許不允許不允許不允許默認(rèn)修飾符允許允許不允許允許不允許Protected允許允許不允許允許允許Public允許允許允許允許允許類(lèi)成員的訪問(wèn)權(quán)限小結(jié):86、繼承中構(gòu)造函數(shù)的調(diào)用(1)在創(chuàng)建一個(gè)子類(lèi)對(duì)象時(shí),系統(tǒng)通過(guò)子類(lèi)的構(gòu)造函數(shù)首先
6、調(diào)用父類(lèi)的構(gòu)造函數(shù),然后執(zhí)行子類(lèi)構(gòu)造函數(shù)中的其余語(yǔ)句;(2)子類(lèi)構(gòu)造函數(shù)使用“super()”調(diào)用父類(lèi)構(gòu)造函數(shù),super調(diào)用要作為子類(lèi)構(gòu)造函數(shù)的第一條語(yǔ)句;(3)如果子類(lèi)構(gòu)造函數(shù)中沒(méi)有super調(diào)用,同時(shí)父類(lèi)中不存在帶形參的構(gòu)造函數(shù),則Java會(huì)自動(dòng)加一條默認(rèn)的super()來(lái)調(diào)用父類(lèi)構(gòu)造函數(shù),負(fù)責(zé)父類(lèi)數(shù)據(jù)成員的初始化,否則系統(tǒng)認(rèn)為存在語(yǔ)法錯(cuò)誤;(4)如果父類(lèi)聲明了帶有形參表的構(gòu)造函數(shù),子類(lèi)就應(yīng)當(dāng)聲明帶形參的構(gòu)造函數(shù),同時(shí)在子類(lèi)構(gòu)造函數(shù)的第一條語(yǔ)句提供一個(gè)帶形參的super調(diào)用,提供一個(gè)將參數(shù)傳遞給父類(lèi)構(gòu)造函數(shù)的途徑,保證在進(jìn)行初始化父類(lèi)時(shí)能夠獲得必
7、要的數(shù)據(jù)。9構(gòu)造函數(shù)繼承的實(shí)例classPoint{protectedintx,y;publicPoint(){x=0;y=0;System.out.println("零點(diǎn)坐標(biāo)為:"+String1());}publicPoint(inta,intb){x=a;y=b;System.out.println("點(diǎn)的坐標(biāo)為:"+String1());}publicStringString1(){return"["+x+","+y+"]";}}10構(gòu)造函數(shù)繼承的實(shí)例(續(xù))classCircleextendsPoint{protecteddoubleradiu
8、s;publicCircle(doubler){radius=r;System.out.pri