




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5章繼承、接口與泛型
本章導(dǎo)讀1.子類與父類2.子類的繼承性3.子類對象的構(gòu)造過程4.成員變量隱藏和方法的重寫5.super關(guān)鍵字6.final類與final方法7.對象的上轉(zhuǎn)型對象第5章繼承、接口與泛型8.繼承與多態(tài)9.使用abstract類10.接口11.接口回調(diào)12.內(nèi)部類13.匿名類14.異常類15.泛型類5.1子類與父類上一章我們主要學(xué)習(xí)了類和對象的有關(guān)知識,討論了類的構(gòu)成(封裝)以及用類創(chuàng)立對象等主要問題; 本章的主要介紹類的繼承、和繼承有關(guān)的多態(tài)性以及接口等重要概念。5.1子類與父類子類與父類繼承是一種由已有的類創(chuàng)立新類的機(jī)制。 利用繼承,我們可以先創(chuàng)立一個(gè)共有屬性的一般類; 根據(jù)該一般類再創(chuàng)立具有特殊屬性的新類,新類繼承一般類的狀態(tài)和行為,并根據(jù)需要增加它自己的新的狀態(tài)和行為。 由繼承而得到的類稱為子類,被繼承的類稱為父類〔超類〕。5.1子類與父類
父類可以是自己編寫的類也可以是java類庫中的類。 利用繼承有利于實(shí)現(xiàn)代碼的重復(fù)使用,子類只需要添加新的功能代碼即可。 Java不支持多重繼承,即子類只能有一個(gè)父類。
使用關(guān)鍵字extends來聲明一個(gè)類是另外一個(gè)類的子類,格式如下:
class子類名extends父類名{…..}5.2子類的繼承性1.繼承的定義所謂類繼承就是子類繼承父類的成員變量和方法作為自己的成員變量和方法,就好象它們是在子類中直接聲明一樣。
當(dāng)然,子類能否繼承父類的變量和方法還有一定的限制。 繼承規(guī)那么:5.2子類的繼承性2.子類和父類在同一包中的繼承性規(guī)那么如果子類和父類在同一個(gè)包中,那么子類自然地繼承了其父類中不是private的成員作為自己的成員。 繼承的成員變量以及方法的訪問權(quán)限保持不變。下面我們看一個(gè)例子。去掉私有成員5.2子類的繼承性3.子類和父類不在同一包中的繼承規(guī)那么如果子類和父類不在同一個(gè)包中,那么子類只能繼承父類的protected、public成員變量和方法; 繼承的成員或方法的訪問權(quán)限不變。 如果子類和父類不在同一個(gè)包里,子類不能繼承父類的友好變量和友好方法。去掉友好成員+私有成員父類:packageFa;publicclassFather{ privateint
priA=10;
int
friB=20; protectedint
proC=30; publicint
pubD=40;}packageSu;importFa.*;publicclassSunextendsFather{ publicvoidprt(){ //System.out.println(priA); //System.out.println(friB);
System.out.println(proC);
System.out.println(pubD); } publicstaticvoidmain(String[]args){ Suns=newSun();
s.prt(); }}子類5.3子類對象的構(gòu)造過程當(dāng)用子類的構(gòu)造方法創(chuàng)立一個(gè)子類的對象時(shí),子類的構(gòu)造方法總是先調(diào)用父類的某個(gè)構(gòu)造方法。因此,我們可以這樣來理解子類創(chuàng)立的對象:〔1〕將子類中聲明的成員變量做為子類對象的成員變量。5.3子類對象的構(gòu)造過程〔2〕父類的成員變量也都分配了內(nèi)存空間,但只將其中一局部〔繼承的那局部〕做為子類對象的成員變量。 父類的private成員變量盡管分配了內(nèi)存空間,但它不作為子類的成員變量,即父類的私有成員不歸子類管理。5.3子類對象的構(gòu)造過程子類對象內(nèi)存示意圖如以下圖
子類未繼承的成員
子類未繼承的成員
引用子類對象
子類繼承的成員
子類繼承的成員
子類聲明的成員
子類聲明的成員5.3子類對象的構(gòu)造過程上頁示意圖中的“叉號〞表示子類中聲明定義的方法不可以操作這些內(nèi)存單元,“對號〞表示子類中聲明定義的方法可以操作這些內(nèi)存單元。 通過上圖,給我們有感覺好象:子類創(chuàng)立對象時(shí)似乎浪費(fèi)了一些內(nèi)存,因?yàn)楫?dāng)用子類創(chuàng)立對象時(shí),父類的成員變量也都分配了內(nèi)存空間,但只將其中一局部做為子類對象的成員變量’ 我們需注意到,子類中還有一局部方法是從父類繼承的,這局部方法卻可以操作這局部變量。下面的例子中,子類對象調(diào)用繼承的方法操作這些未被子類繼承卻分配了內(nèi)存空間的變量。5.4成員變量的隱藏和方法的重寫
1.成員變量的隱藏子類可以隱藏繼承的成員變量,當(dāng)在子類中定義和父類中同名的成員變量時(shí),子類就隱藏了繼承的成員變量。 下面我們看一個(gè)例子,在這個(gè)例子中子類隱藏了從父類繼承的double型變量。該程序的運(yùn)行結(jié)果如下:
5.4成員變量的隱藏和方法的重寫
2.方法重寫子類也可以隱藏方法,子類通過方法重寫來隱藏繼承的方法。
方法重寫是指:子類中定義一個(gè)方法,并且這個(gè)方法的名字、返回類型、參數(shù)個(gè)數(shù)和類型與從父類繼承的方法完全相同。 子類通過方法的重寫可以把父類的狀態(tài)和行為改變?yōu)樽陨淼臓顟B(tài)和行為。
下面這個(gè)例子可以幫助我們更好的理解方法的重寫。5.4成員變量的隱藏和方法的重寫
需要注意的是:
方法重寫時(shí)一定要保證方法的名字、類型、參數(shù)個(gè)數(shù)和類型同父類的某個(gè)方法完全相同,只有這樣,子類繼承的這個(gè)方法才被隱藏。 如果子類在準(zhǔn)備隱藏繼承的方法時(shí),參數(shù)個(gè)數(shù)或參數(shù)類型與父類的方法不盡相同,那實(shí)際上也沒有隱藏繼承的方法,這時(shí)子類就出現(xiàn)兩個(gè)方法具有相同的名字。下面我們看個(gè)例子。程序的運(yùn)行結(jié)果如右圖:5.5Super關(guān)鍵字
Super關(guān)鍵字有兩種用法:一種用法是子類使用super調(diào)用父類的構(gòu)造方法,另一種用法是子類使用super調(diào)用被子類隱藏的成員變量和方法。5.5Super關(guān)鍵字1.使用super調(diào)用父類的構(gòu)造方法
子類不繼承父類的構(gòu)造方法; 因此,子類如果想使用父類的構(gòu)造方法,必須在子類的構(gòu)造方法中使用并且必須使用關(guān)鍵字super來表示,而且super必須是子類構(gòu)造方法中的第一條語句。 在下面的例子中,子類的構(gòu)造方法中使用super調(diào)用父類的構(gòu)造方法。5.5Super關(guān)鍵字
2.使用super操作被隱藏的成員變量和方法
當(dāng)子類中定義了一個(gè)方法,并且這個(gè)方法的名字、返回類型、參數(shù)個(gè)數(shù)和類型和父類的某個(gè)方法完全相同時(shí),子類從父類繼承的這個(gè)方法將被隱藏。 如果我們在子類中想使用被子類隱藏的成員變量或方法就可以使用關(guān)鍵字super。在下面這個(gè)例子中,子類使用super調(diào)用被隱藏的成員變量和方法。其結(jié)果如下:5.6final類和final方法final類不能被繼承,即不能有子類,如:finalclassA{…}將一個(gè)類聲明為final類一般是由于平安性考慮。
一旦一個(gè)方法被修飾為final方法,那么這個(gè)方法不能被重寫,即不允許子類通過重寫隱藏繼承的final方法。5.7對象的上轉(zhuǎn)型對象1.對象的上轉(zhuǎn)型下面我們就介紹對象的上轉(zhuǎn)型對象。假設(shè),B是A的子類或間接子類,當(dāng)我們用子類B創(chuàng)立一個(gè)對象,并把這個(gè)對象的引用放到A類聲明的對象變量中時(shí),比方:Aa;a=newB(); 那么就稱對象a是子類對象b的上轉(zhuǎn)型對象5.7對象的上轉(zhuǎn)型對象 對象a是子類對象b的上轉(zhuǎn)型對象,對象的上轉(zhuǎn)型對象的實(shí)體是子類對象實(shí)體,但上轉(zhuǎn)型對象會(huì)失去子類對象的一些屬性和功能。上轉(zhuǎn)型對象具有如下特點(diǎn)〔見以下圖所示〕。子類對象子類對象的上轉(zhuǎn)型對象繼承或隱藏的成員變量繼承或重寫的方法新增的變量新增的方法5.7對象的上轉(zhuǎn)型對象 可以將對象的上轉(zhuǎn)型對象再強(qiáng)制轉(zhuǎn)換到一個(gè)子類對象,這時(shí),該子類對象又具備了子類所有屬性和功能。為了更好的理解對象的上轉(zhuǎn)型,我們先看個(gè)例子。
5.8繼承與多態(tài)和繼承有關(guān)的多態(tài)性是指父類的某個(gè)方法被其子類重寫時(shí),可以產(chǎn)生自己的功能行為,即同一個(gè)操作被不同類型對象調(diào)用時(shí)可能產(chǎn)生不同的行為。 例如,狗和貓都具有哺乳類的功能:“叫聲〞,當(dāng)狗操作“叫聲〞時(shí)產(chǎn)生的聲音是“汪汪…,而貓操作“叫聲〞時(shí)產(chǎn)生的聲音是“喵喵〞,這就是“叫聲〞的多態(tài)。當(dāng)一個(gè)類有很多子類時(shí),并且這些子類都重寫了父類中的某個(gè)方法。 當(dāng)我們把子類創(chuàng)立的對象的引用放到一個(gè)父類的對象中時(shí),就得到了該對象的一個(gè)上轉(zhuǎn)型對象,那么這個(gè)上轉(zhuǎn)型對象在調(diào)用這個(gè)方法時(shí)就可能具有多種形態(tài)。5.8繼承與多態(tài) 因?yàn)椴煌淖宇愒谥貙懜割惖姆椒〞r(shí)可能產(chǎn)生不同的行為。也就是說,不同對象的上轉(zhuǎn)型對象調(diào)用同一方法可能產(chǎn)生不同的行為。下面讓我們看一個(gè)例子來更好地了解繼承與多態(tài)和對象的上轉(zhuǎn)型對象。程序的運(yùn)行結(jié)果如以下圖:返回5.9使用abstract類用關(guān)鍵字abstract修飾類稱為abstract類〔抽象類〕。如:abstractclassA{……}abstract類不能用new運(yùn)算符創(chuàng)立對象,必須產(chǎn)生其子類,由子類創(chuàng)立對象。 假設(shè)abstract類的類體中有abstract方法,只允許聲明,而不允許實(shí)現(xiàn),而該類的子類必須實(shí)現(xiàn)abstract方法,即重寫父類的abstract方法。 一個(gè)abstract類只關(guān)心子類是否具有某種功能,不關(guān)心功能的具體實(shí)現(xiàn)。具體實(shí)現(xiàn)由子類負(fù)責(zé)。下面我們看一個(gè)例子:5.9使用abstract類 我們可以看到:圓錐、梯形為底的錐; 假設(shè)我們不用geometry類和對象的上轉(zhuǎn)型對象,這里我們至少要使用兩個(gè)構(gòu)造方法。 這里是只涉及圓錐和梯形錐,假設(shè)是在有其它很多種形式的錐,這里的工作的量將非常大,這就是我們?yōu)槭裁词褂胊bstract類和對象的上轉(zhuǎn)型對象。 當(dāng)然當(dāng)我們學(xué)習(xí)接口后我們還可以使用接口實(shí)現(xiàn)這種功能。這在后面將詳細(xì)介紹。5.10接口Java不支持多繼承性,即一個(gè)類只能有一個(gè)父類。單繼承性使得Java簡單,易于管理程序。為了克服單繼承的缺點(diǎn),Java使用了接口,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。使用關(guān)鍵字interface來定義一個(gè)接口。接口的定義和類的定義很相似,分為接口的聲明和接口體。1.接口的聲明與使用〔1〕接口通過使用關(guān)鍵字interface來聲明,格式:interface接口的名字5.10接口〔2〕接口體接口體中包含常量定義和方法定義兩局部。接口體中只進(jìn)行方法的聲明,不許提供方法的實(shí)現(xiàn),所以,方法的定義沒有方法體,且用分號“;〞結(jié)尾。〔3〕接口的使用一個(gè)類通過使用關(guān)鍵字implements聲明自己實(shí)現(xiàn)一個(gè)或多個(gè)接口。如果實(shí)現(xiàn)多個(gè)接口,用逗號隔開接口名,如:classAimplementsPrintable,Addable5.10接口
如果一個(gè)類實(shí)現(xiàn)某個(gè)接口,那么這個(gè)類必須實(shí)現(xiàn)該接口的所有方法,即為這些方法提供方法體。 要注意的是,接口中的方法被默認(rèn)是public和abstract的,接口在聲明方法時(shí)可以省略方法前面的public和abstract關(guān)鍵字,但是,類在實(shí)現(xiàn)接口方法時(shí),一定要用public來修飾。 接口也可以被繼承,即可以通過關(guān)鍵字extends聲明一個(gè)接口是另一個(gè)接口的子接口。現(xiàn)在我們看一個(gè)例子來看一看類是如何實(shí)現(xiàn)接口的。5.10接口2.接口與多態(tài)的優(yōu)勢接口的語法規(guī)那么很容易記住,但真正理解接口更重要。 為什么要用接口呢?假設(shè)轎車、拖拉機(jī)、客車都是機(jī)動(dòng)車的子類,其中機(jī)動(dòng)車是一個(gè)抽象類。如果機(jī)動(dòng)車中有3個(gè)抽象方法:“剎車〞、“收取費(fèi)用〞、“調(diào)節(jié)溫度〞,那么所有的子類都要實(shí)現(xiàn)這3個(gè)方法,產(chǎn)生各自的收費(fèi)或控制溫度的行為。 這顯然不符合人們的思維方法,因?yàn)橥侠瓩C(jī)可能不需要有“收取費(fèi)用〞或“調(diào)節(jié)溫度〞的功能; 可能的處理就是去掉機(jī)動(dòng)車的“收取費(fèi)用〞和“調(diào)節(jié)溫度〞這兩個(gè)方法。各個(gè)子類自己擴(kuò)展。這樣,高層次的抽象無法實(shí)現(xiàn)拉。5.10接口 Java支持繼承,但不支持多繼承,即一個(gè)類只能有一個(gè)父類。 單繼承使得程序更加容易維護(hù)和健壯; 多繼承使得編程更加靈活,但使用不當(dāng)會(huì)引起混亂. 為了使程序容易維護(hù)和健壯,且不失靈活性,Java使用了接口,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,接口可以增加很多類都需要實(shí)現(xiàn)的功能,不同的類可以使用相同的接口,同一個(gè)類也可以實(shí)現(xiàn)多個(gè)接口。 3個(gè)抽象方法:“剎車〞、“收取費(fèi)用〞、“調(diào)節(jié)溫度〞:兩個(gè)接口:收取費(fèi)用〞、“調(diào)節(jié)溫度〞接口和“剎車〞接口;5.11接口的回調(diào)在講述繼承與多態(tài)時(shí),我們通過子類對象的上轉(zhuǎn)型表達(dá)了繼承的多態(tài)性,即把子類創(chuàng)立的對象的引用放到一個(gè)父類的對象中時(shí),得到該對象的一個(gè)上轉(zhuǎn)型對象,那么這個(gè)上轉(zhuǎn)型對象在調(diào)用方法時(shí)就可能具有多種形態(tài), 不同對象的上轉(zhuǎn)型對象調(diào)用同一方法可能產(chǎn)生不同的行為。1.接口回調(diào)接口回調(diào)是多態(tài)的另一種表達(dá),接口回調(diào)是指: 可以把使用某一接口的類創(chuàng)立的對象的引用賦給該接口聲明的接口變量中; 那么該接口變量就可以調(diào)用被類實(shí)現(xiàn)的接口中的方法; 當(dāng)接口變量調(diào)用被類實(shí)現(xiàn)的接口中的方法時(shí),就是通知相應(yīng)的對象調(diào)用接口中的相應(yīng)方法,這一過程稱作對象功能的接口回調(diào)。5.11接口的回調(diào)不同的類在使用同一接口時(shí),可能具有不同的功能表達(dá),即接口的方法體不必相同,因此,接口回調(diào)可能產(chǎn)生不同的行為。下面我們看看使用了接口的回調(diào)技術(shù)的例子。2.接口做參數(shù)當(dāng)一個(gè)方法的參數(shù)是一個(gè)接口類型時(shí),如果一個(gè)類實(shí)現(xiàn)了該接口,那么,就可以把該類的實(shí)例的引用傳值給該參數(shù),參數(shù)可以回調(diào)類實(shí)現(xiàn)的接口方法。下面我們再看一個(gè)接口做參數(shù)的例子。
5.12內(nèi)部類
我們已經(jīng)知道:類可以有兩種重要的成員:成員變量和方法,類還可以有一種成員:內(nèi)部類。 Java支持在一個(gè)類中聲明另一個(gè)類,這樣的類稱作內(nèi)部類,而包含內(nèi)部類的類成為內(nèi)部類的外嵌類。 內(nèi)部類同類中聲明的方法或成員變量一樣,一個(gè)類把內(nèi)部類看作是自己的成員。內(nèi)部類中的也可以調(diào)用外嵌類的成員變量,方法
外嵌類可以聲明內(nèi)部類對象,作為外嵌類的成員。下面讓我們結(jié)合這個(gè)例子更好的了解內(nèi)部類。5.13匿名類1.和類有關(guān)的匿名類當(dāng)使用類創(chuàng)立對象時(shí),程序允許我們把類體與對象的創(chuàng)立組合在一起;new類名(){類體} 該類體被認(rèn)為是某類的一個(gè)子類去掉類聲明后的類體,稱作匿名類。 匿名類就是一個(gè)子類,由于無名可用,所以不可能用匿名類聲明對象,但卻可以直接用匿名類創(chuàng)立一個(gè)對象。假設(shè)Hello是類,那么以下代碼就是用Hello的一個(gè)子類〔匿名類〕創(chuàng)立對象:5.13匿名類newHello(){匿名類的類體}匿名類可以繼承類的方法也可以重寫類的方法。匿名類可以訪問外嵌類中的成員。 匿名類的主要用途就是作為實(shí)參向方法的形參傳遞對象引用。下面的例子展示了匿名類的用法。 我們使用匿名類時(shí),必然是在某個(gè)類中直接用匿名類創(chuàng)立對象,因此匿名類一定是內(nèi)部類。5.13匿名類2.和接口有關(guān)的匿名類假設(shè)Computable是一個(gè)接口,那么,Java允許直接用接口名和一個(gè)類體創(chuàng)立一個(gè)匿名對象,此類體被認(rèn)為是實(shí)現(xiàn)了Computable接口的類去掉類聲明后的類體,稱作匿名類。 以下代碼就是用實(shí)現(xiàn)了Computable接口的類〔匿名類〕創(chuàng)立對象:newComputable(){實(shí)現(xiàn)接口的匿名類的類體}5.13匿名類如果某個(gè)方法的參數(shù)是接口類型,那么我們可以使用接口名和類體組合創(chuàng)立一個(gè)匿名對象作為實(shí)參傳遞給方法的形參,類體必須要實(shí)現(xiàn)接口中的全部方法。下面的例子16展示了和接口有關(guān)的匿名類的用法。
5.14異常類所謂異常就是程序運(yùn)行時(shí)可能出現(xiàn)一些錯(cuò)誤,比方試圖翻開一個(gè)根本不存在的文件等,異常處理將會(huì)改變程序的控制流程,讓程序有時(shí)機(jī)對錯(cuò)誤作出處理。 將可能出現(xiàn)的異常操作放在try~catch語句的try局部,當(dāng)try局部中的某個(gè)語句發(fā)生異常后,try局部將立刻結(jié)束執(zhí)行,而轉(zhuǎn)向執(zhí)行相應(yīng)的catch局部。5.14異常類所以程序可以將發(fā)生異常后的處理放在catch局部。1.try~catch語句try~catch語句的格式如下:try{包含可能發(fā)生異常的語句}catch(ExceptionSubClass1e){}5.14異常類catch(ExceptionSubClass2e){}各個(gè)catch參數(shù)中的異常類都是Exception的某個(gè)子類,說明try局部可能發(fā)生的異常。下面我們看一個(gè)例子,在這個(gè)例子中,我們試圖將一個(gè)非數(shù)字字符轉(zhuǎn)變成整形數(shù),這時(shí)就發(fā)生NumberFormatException異常。5.14異常類2.自定義異常類1〕我們也可以擴(kuò)展Exception類定義自己的異常類,然后規(guī)定哪些方法拋出這樣的異常。 2〕一個(gè)方法在聲明時(shí)可以使用throws關(guān)鍵字聲明拋出所要產(chǎn)生的假設(shè)干個(gè)異常,并在該方法的方法體中具體給出產(chǎn)生異常的操作,即用相應(yīng)的異常類創(chuàng)立對象; 這樣在方法結(jié)束執(zhí)行并拋出所創(chuàng)立的異常對象。 3〕程序必須在try語句中調(diào)用拋出異常的方法。
5.14異常類在下面例子
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)藝師考試成功的基本策略試題及答案
- 耳鼻喉出科考試題及答案
- 2024年園藝師考試加分試題及答案
- 園藝設(shè)計(jì)理念創(chuàng)新考察試題及答案
- 2025至2030年電腦繡花機(jī)專用繞線機(jī)項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年電腦屏風(fēng)項(xiàng)目投資價(jià)值分析報(bào)告
- 農(nóng)業(yè)資源與環(huán)境保護(hù)理念試題及答案
- 福建事業(yè)單位考試家庭角色試題及答案
- 2024年花藝師現(xiàn)場表現(xiàn)與應(yīng)變能力考題試題及答案
- 2024年福建事業(yè)單位考試課程設(shè)計(jì)與試題及答案
- 銀行案件防控課件
- 2025年江蘇省安全員B證考試題庫附答案
- 科級試用期滿工作總結(jié)(4篇)
- 歷史-安徽省蚌埠市2025屆高三年級第二次教學(xué)質(zhì)量檢查考試(蚌埠二模)試題和答案
- 2025年從大模型、智能體到復(fù)雜AI應(yīng)用系統(tǒng)的構(gòu)建報(bào)告-以產(chǎn)業(yè)大腦為例-浙江大學(xué)(肖俊)
- 2025年浙江省金華市中考一模數(shù)學(xué)模擬試題(含答案)
- 2024年國家發(fā)展和改革委員會(huì)直屬單位招聘考試真題
- 《中國古代神話》課件
- 供應(yīng)商考核管理制度
- 酒店動(dòng)火作業(yè)安全制度
- 電纜故障知識培訓(xùn)課件
評論
0/150
提交評論