版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
.NET面向?qū)ο蟪绦蛟O(shè)計(jì)第13章創(chuàng)建接口和定義抽象類(lèi)本章簡(jiǎn)介定義接口在結(jié)構(gòu)或類(lèi)中實(shí)現(xiàn)接口通過(guò)接口引用一個(gè)類(lèi)在抽象類(lèi)中捕獲通用的實(shí)現(xiàn)細(xì)節(jié)使用sealed關(guān)鍵字13.2抽象類(lèi)存在的問(wèn)題:MoveForward方法僅僅是一個(gè)啞方法,它需要在子類(lèi)中進(jìn)行覆蓋,如果放置了錯(cuò)誤的方法而又有人調(diào)用,問(wèn)題嚴(yán)重!19:publicvirtualvoidMoveForward()20:{21:Console.Write("Movingforward...");22:odometer+=1;23:Console.WriteLine("Odometerreading:{0}",odometer);24:}解決:使用抽象方法一個(gè)抽象方法只包含方法頭而且沒(méi)有實(shí)現(xiàn)代碼,它需要后續(xù)類(lèi)來(lái)具體實(shí)現(xiàn)這一方法。當(dāng)一個(gè)類(lèi)包含一個(gè)或多個(gè)抽象方法時(shí),此類(lèi)必須聲明為abstract。一個(gè)抽象類(lèi)不能實(shí)例化,因?yàn)樗瑳](méi)有實(shí)現(xiàn)的方法。示例:AbstractMoveForward.cs
01:usingSystem;02:03:abstractclassCar04:{05:privateuintodometer=0;06:07:protecteduintOdometer08:{09:set10:{11:odometer=value;12:}13:get14:{15:returnodometer;16:}17:}18:19:publicabstractvoidMoveForward();20:}22:classRacingCar:Car23:{24:publicoverridevoidMoveForward()25:{26:Console.Write("Movingdangerouslyfastforward...");27:Odometer+=30;28:Console.WriteLine("Odometerinracingcar:{0}",Odometer);29:}30:}32:classFamilyCar:Car33:{34:publicoverridevoidMoveForward()35:{36:Console.Write("Movingslowlybutsafelyforward...");37:Odometer+=5;38:Console.WriteLine("Odometerinfamilycar:{0}",Odometer);39:}40:}42:classCarTester43:{44:publicstaticvoidMain()45:{46:RacingCarmyRacingCar=newRacingCar();47:FamilyCarmyFamilyCar=newFamilyCar();48:myRacingCar.MoveForward();49:myFamilyCar.MoveForward();50:}51:}SyntaxBox:AbstractMethodAbstract_method::=[<Method_modifiers>]abstract<Return_type>
<Method_identifier>([<Formal_parameter_list>]);Abstract_property_1::=
[<Property_modifiers>]abstract<Return_type><Property_identifier>{
[get;]
[set;]}Abstract_indexer_1::=
[<Indexer_modifiers>]abstract[<Return_type>]this[<Parameter_list>]{
[get;]
[set;]}Abstract_class::=
<Class_modifiers>abstract<Class_name>{
<Class_members>}說(shuō)明:用關(guān)鍵字abstract聲明的抽象方法沒(méi)有方法體,在一對(duì)包括形式參數(shù)列表的圓括號(hào)后面有一個(gè)分號(hào)。抽象方法不能聲明為private、static、virtual抽象方法和抽象存取器為隱式的virtual抽象方法只能存在于抽象類(lèi)中,但抽象類(lèi)能包括非抽象方法抽象類(lèi)不能實(shí)例化從一個(gè)包含抽象方法的類(lèi)中派生一個(gè)類(lèi),派生類(lèi)也成為抽象,除非覆蓋從基類(lèi)中繼承的所有抽象方法并提供實(shí)現(xiàn)語(yǔ)句。在派生類(lèi)中可以使用抽象方法來(lái)覆蓋虛方法,任何從此抽象類(lèi)派生的類(lèi)必須覆蓋這些抽象方法并提供新的實(shí)現(xiàn)語(yǔ)句,使之變成非抽象。9生活中的接口電腦主板上的PCI插槽的規(guī)范就類(lèi)似于C#接口聲卡顯卡網(wǎng)卡每種卡的內(nèi)部結(jié)構(gòu)都不相同,可以把聲卡、網(wǎng)卡、顯卡都插在PCI插槽上,而不用擔(dān)心哪個(gè)插槽是專(zhuān)門(mén)插哪個(gè)卡的主板13.1理解接口關(guān)于多重繼承的爭(zhēng)議多重繼承可以讓類(lèi)擁有多個(gè)基類(lèi)當(dāng)兩個(gè)基類(lèi)都包含一個(gè)信號(hào)相同但實(shí)現(xiàn)過(guò)程不同的方法或?qū)傩詴r(shí)發(fā)生的情況:moveforward、brandName、odometerC#禁止多重繼承而用另一種語(yǔ)言結(jié)構(gòu):接口來(lái)解決問(wèn)題。13.1.1定義接口接口是表示一組函數(shù)成員而不實(shí)現(xiàn)成員的引用類(lèi)型C#中使用interface定義接口注意:C#中建議接口名以大寫(xiě)字母I開(kāi)頭13.1.2實(shí)現(xiàn)接口要實(shí)現(xiàn)一個(gè)接口,需要聲明一個(gè)類(lèi)或結(jié)構(gòu),讓它們從接口繼承,并實(shí)現(xiàn)接口指定的全部方法例如:interfaceILandBound{intNumberOfLegs();}然后可以在Horse類(lèi)中實(shí)現(xiàn)該接口classHorse:ILandBound{...publicintNumberOfLegs(){return4;}}實(shí)現(xiàn)一個(gè)接口時(shí),必須保證每個(gè)方法都完全匹配與它對(duì)應(yīng)的接口中的方法,規(guī)則如下:方法名和返回類(lèi)型完全匹配所有參數(shù)(包括ref和out關(guān)鍵字)完全匹配使用接口名作為方法的前綴,稱(chēng)之為顯式接口實(shí)現(xiàn),盡量使用顯式接口實(shí)現(xiàn)用于實(shí)現(xiàn)一個(gè)接口的所有方法都必須具有public可訪(fǎng)問(wèn)性,但是,如果使用顯式接口實(shí)現(xiàn),則不應(yīng)該為方法添加訪(fǎng)問(wèn)修飾符接口的定義和實(shí)現(xiàn)存在任何差異,類(lèi)都無(wú)法編譯一個(gè)類(lèi)可以在擴(kuò)展另一個(gè)類(lèi)的同時(shí)實(shí)現(xiàn)一個(gè)接口下例將Horse定義成從Mammal繼承的一個(gè)類(lèi),同時(shí)實(shí)現(xiàn)了ILandBound接口interfaceILandBound{...}classMammal{...}classHorse:Mammal,ILandBound{...}13.1.3通過(guò)接口來(lái)引用一個(gè)類(lèi)可以把一個(gè)變量定義成引用層次結(jié)構(gòu)中較高位置的一個(gè)類(lèi),然后用這個(gè)變量引用對(duì)象類(lèi)似的,可以將一個(gè)變量定義成類(lèi)所實(shí)現(xiàn)的接口,然后用這個(gè)變量引用對(duì)象例如:HorsemyHorse=newHorse(...);ILandBoundiMyHorse=myHorse;//legal通過(guò)接口來(lái)引用一個(gè)對(duì)象,是一項(xiàng)相當(dāng)有用的技術(shù)我們能由此定義方法,讓它獲得不同的類(lèi)型作為參數(shù),只要類(lèi)型實(shí)現(xiàn)了指定的接口intFindLandSpeed(ILandBoundlandBoundMammal){...}13.1.4使用多個(gè)接口一個(gè)類(lèi)最多只能有一個(gè)基類(lèi),但可以實(shí)現(xiàn)數(shù)量無(wú)限的接口類(lèi)必須實(shí)現(xiàn)它從它的所有接口繼承的所有方法例如:classHorse:Mammal,ILandBound,IGrazable{...}13.1.5顯式實(shí)現(xiàn)接口Horse類(lèi)實(shí)現(xiàn)了ILandBound接口,但在Horse的NumberOfLegs方法中,沒(méi)有任何地方說(shuō)它是ILandBound接口的一部分interfaceILandBound{intNumberOfLegs();}classHorse:ILandBound{...publicintNumberOfLegs(){return4;}}如果Horse類(lèi)實(shí)現(xiàn)了多個(gè)接口,而多個(gè)接口指定了同名的方法,則會(huì)出現(xiàn)歧義例如:interfaceIJourney{intNumberOfLegs();}classHorse:ILandBound,IJourney{...publicintNumberOfLegs(){return4;}}C#中通過(guò)顯式實(shí)現(xiàn)接口解決這個(gè)問(wèn)題為此,要在實(shí)現(xiàn)一個(gè)接口時(shí),指明方法從屬于該接口classHorse:ILandBound,IJourney{...intILandBound.NumberOfLegs(){return4;}intIJourney.NumberOfLegs(){return3;}}注意:方法沒(méi)有用public標(biāo)記。如果方法是顯式接口實(shí)現(xiàn)的一部分,就不能為方法指定訪(fǎng)問(wèn)修飾符,所以無(wú)法從類(lèi)的外部訪(fǎng)問(wèn)。如果方法在Horse類(lèi)中可見(jiàn),下述代碼無(wú)法確定Horsehorse=newHorse();...intlegs=horse.NumberOfLegs();應(yīng)該通過(guò)恰當(dāng)?shù)慕涌趤?lái)引用Horse對(duì)象Horsehorse=newHorse();...IJourneyjourneyHorse=horse;intlegsInJourney=journeyHorse.NumberOfLegs();ILandBoundlandBoundHorse=horse;intlegsOnHorse=landBoundHorse.NumberOfLegs();abstractclass與interface抽象類(lèi)(abstractclass)是一種特殊的類(lèi)抽象方法只做聲明,而不包含實(shí)現(xiàn),可以看成是沒(méi)有實(shí)現(xiàn)體的虛方法抽象類(lèi)不能被實(shí)例化,除此之外,具有類(lèi)的其他特性抽象類(lèi)可以但不是必須有抽象屬性和抽象方法,但是一旦有了抽象方法,就一定要把這個(gè)類(lèi)聲明為抽象類(lèi)具體派生類(lèi)必須覆蓋基類(lèi)的抽象方法抽象類(lèi)可以派生自另一個(gè)抽象類(lèi),可以覆蓋基類(lèi)的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類(lèi)必須覆蓋它們接口:是引用類(lèi)型,類(lèi)似于抽象類(lèi)但又不同于抽象類(lèi)不能被實(shí)例化只能包含實(shí)現(xiàn)的方法聲明成員可以包括方法、屬性、索引器和事件接口中不能包含常量、字段、構(gòu)造函數(shù)、析構(gòu)函數(shù)或靜態(tài)成員接口中的所有成員默認(rèn)為public,接口中不能有private成員派生類(lèi)必須實(shí)現(xiàn)接口的所有成員一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口一個(gè)接口可以有多個(gè)父接口,實(shí)現(xiàn)該接口必須實(shí)現(xiàn)多有父接口中的所有成員抽象類(lèi)和接口的共同點(diǎn)都可以被繼承都不能被實(shí)例化都可以包含方法聲明派生類(lèi)必須實(shí)現(xiàn)未實(shí)現(xiàn)的方法抽象類(lèi)和接口的區(qū)別抽象類(lèi)是一個(gè)不完整的類(lèi),需要進(jìn)一步細(xì)化,而接口只是一個(gè)行為規(guī)范或規(guī)定,微軟的自定義接口總是后帶able字段,證明其是表述一類(lèi)類(lèi)“我能做…”.抽象類(lèi)可以定義字段、屬性和方法實(shí)現(xiàn)。接口只能定義屬性、索引器、事件、和方法聲明,不能包含字段。抽象類(lèi)更多的是定義在一系列緊密相關(guān)的類(lèi)之間,而接口大多數(shù)是定義在關(guān)系疏松但都實(shí)現(xiàn)某一功能的類(lèi)中。接口基本上不具備繼承的任何具體特點(diǎn),它僅僅承諾了能夠調(diào)用的方法。接口可以被多重實(shí)現(xiàn),抽象類(lèi)只能被單一繼承。即一個(gè)類(lèi)一次可以實(shí)現(xiàn)若干個(gè)接口,但只能繼承一個(gè)父類(lèi)。接口可以用于支持回調(diào),而繼承并不具備這個(gè)特點(diǎn)。抽象類(lèi)不能被密封。抽象類(lèi)實(shí)現(xiàn)的具體方法默認(rèn)為虛的,但實(shí)現(xiàn)接口類(lèi)的接口方法卻默認(rèn)為非虛的,當(dāng)然也可以聲明為虛的。接口與非抽象類(lèi)類(lèi)似,抽象類(lèi)也必須為在該類(lèi)的基類(lèi)表中列出接口的所有成員提供它自己的實(shí)現(xiàn)。但是,允許抽象類(lèi)將接口方法映射到抽象方法上。如果抽象類(lèi)實(shí)現(xiàn)接口,則可以把接口中的方法映射到抽象類(lèi)中作為抽象方法而不必實(shí)現(xiàn),而在抽象類(lèi)的子類(lèi)中實(shí)現(xiàn)接口的方法。抽象類(lèi)和接口的使用抽象類(lèi)主要用于關(guān)系密切的對(duì)象;而接口用于為不相關(guān)的類(lèi)提供通用功能如果要設(shè)計(jì)大的功能單元,則使用抽象類(lèi);如果要在組件的所有實(shí)現(xiàn)間提供通用的已實(shí)現(xiàn)功能,則使用抽象類(lèi)。如果創(chuàng)建的功能將在大范圍的全異對(duì)象間使用,則使用接口。如果要設(shè)計(jì)小而簡(jiǎn)練的功能塊,則使用接口。如果預(yù)計(jì)要?jiǎng)?chuàng)建組件的多個(gè)版本,則創(chuàng)建抽象類(lèi)。抽象類(lèi)提供簡(jiǎn)單的方法來(lái)控制組件版本。好的接口定義應(yīng)該是具有專(zhuān)一功能性的,而不是多功能的,否則會(huì)造成接口的污染。如果一個(gè)類(lèi)只是實(shí)現(xiàn)了這個(gè)接口中的一個(gè)功能,而不得不去實(shí)現(xiàn)接口的其他方法,那么就叫接口污染。盡量避免使用繼承來(lái)實(shí)現(xiàn)組件功能,而是使用黑箱復(fù)用,即對(duì)象組合。因?yàn)槔^承的層次增多,造成最直接的后果就是當(dāng)你調(diào)用這個(gè)類(lèi)群中的某一類(lèi)時(shí),就必須把它們?nèi)考虞d到棧中!后果可想而知。同時(shí),有心的朋友可以留意到微軟在構(gòu)建一個(gè)類(lèi)時(shí),很多時(shí)候都用到了對(duì)象組合的方法。比如中的\Page類(lèi),有Server、Request等屬性,但其實(shí)它們都是某個(gè)類(lèi)的對(duì)象。使用Page類(lèi)的這個(gè)對(duì)象來(lái)調(diào)用另外類(lèi)的方法和屬性,是非?;镜囊粋€(gè)設(shè)計(jì)原則。2413.1.6接口的限制不允許在接口中定義任何字段,即使是靜態(tài)字段。字段本質(zhì)上是類(lèi)或結(jié)構(gòu)的一種實(shí)現(xiàn)細(xì)節(jié)不允許在接口中定義任何構(gòu)造器不允許在接口中定義任何析構(gòu)器不允許為任何方法指定訪(fǎng)問(wèn)修飾符,接口中的所有方法都隱式為public不允許在接口中嵌套任何類(lèi)型雖然一個(gè)接口能從另一個(gè)接口繼承,但不允許從結(jié)構(gòu)或者類(lèi)中繼承一個(gè)接口。結(jié)構(gòu)或者類(lèi)中含有實(shí)現(xiàn),假如允許接口從它們繼承,就會(huì)繼承一些實(shí)現(xiàn)。說(shuō)明:接口標(biāo)示符習(xí)慣上以大寫(xiě)I開(kāi)頭,因?yàn)榻涌诳梢詮?qiáng)迫類(lèi)實(shí)現(xiàn)抽象成員讓類(lèi)執(zhí)行額外的動(dòng)作,所以類(lèi)標(biāo)識(shí)符通常以able結(jié)尾。總之:接口描述需要實(shí)現(xiàn)的操作、屬性和事件,以及每個(gè)操作需要接受和返回的參數(shù)類(lèi)型,但將操作的特定實(shí)現(xiàn)留給實(shí)現(xiàn)接口的類(lèi)去完成。25接口的一個(gè)應(yīng)用在一個(gè)類(lèi)層次中要實(shí)現(xiàn)多態(tài),必需具備一組有相同祖先的類(lèi)如果我們想要?jiǎng)澐殖山M的類(lèi)不具有相同的祖先呢?如果它們分布于整個(gè)程序的多個(gè)地方,甚至位于多個(gè)單獨(dú)的類(lèi)層次中,情況如何??2627實(shí)現(xiàn)方法:publicinterfaceIDrawable{voidDrawYourself();}28示例程序:ComparableTimeSpans.cs01:usingSystem;02:03:publicinterfaceIComparable04:{05:intCompareTo(IComparablecomp);06:}07:08:publicclassTimeSpan:IComparable09:{10:privateuinttotalSeconds;11:12:publicTimeSpan()13:{14:totalSeconds=0;15:}16:17:publicTimeSpan(uintinitialSeconds)18:{19:totalSeconds=initialSeconds;20:}2922:publicuintSeconds23:{24:get25:{26:returntotalSeconds;27:}28:29:set30:{31:totalSeconds=value;32:}33:}34:35:publicintCompareTo(IComparablecomp)36:{37:TimeSpancompareTime=(TimeSpan)comp;38:39:if(totalSeconds>compareTime.Seconds)40:return1;41:elseif(compareTime.Seconds==totalSeconds)42:return0;43:else44:return-1;45:}46:}3048:classTester49:{50:publicstaticvoidMain()51:{52:TimeSpanmyTime=newTimeSpan(3450);53:TimeSpanworldRecord=newTimeSpan(1239);54:55:if(myTime.CompareTo(worldRecord)<0)56:Console.WriteLine("Mytimeisbelowtheworldrecord");57:elseif(myTime.CompareTo(worldRecord)==0)58:Console.WriteLine("Mytimeisthesameastheworldrecord");59:else60:Console.WriteLine("Ispentmoretimethantheworldrecordholder");61:}62:}Ispentmoretimethantheworldrecordholder31接口的另一個(gè)應(yīng)用示例排序的實(shí)現(xiàn):按姓名排序、分?jǐn)?shù)、院系一般性的實(shí)現(xiàn)過(guò)程:可重用于排序其他任何對(duì)象類(lèi)型示例:BubbleSortAscening.cs3201://Sorttheelementsofanarrayinascendingorder02:publicstaticvoidBubbleSortAscending(int[]bubbles)03:{04:boolswapped=true;05:06:for(inti=0;swapped;i++)07:{08:swapped=false;09:for(intj=0;j<(bubbles.Length-(i+1));j++)10:{11:if(bubbles[j]>bubbles[j+1])12:{13:Swap(j,j+1,bubbles);14:swapped=true;15:}16:}17:}18:}19:20://Swaptwoelementsofanarray21:publicstaticvoidSwap(intfirst,intsecond,int[]arr)22:{23:inttemp;24:25:temp=arr[first];26:arr[first]=arr[second];27:arr[second]=temp;28:}33存在的問(wèn)題:只能排序元素類(lèi)型為int的數(shù)組思考:只有11行涉及到更換數(shù)組元素類(lèi)型,其余代碼可以保持不變,使用替換代碼if(bubbles[j].CompareTo(bubbles[j+1])>0)實(shí)現(xiàn):將一般排序方法的形式參數(shù)聲明為Icomparable類(lèi)型的數(shù)組,可以確定只有包含可比較對(duì)象的數(shù)組被傳遞給方法3401:usingSystem;02:03:publicinterfaceIComparable04:{05:intCompareTo(IComparablecomp);06:}07:08:publicclassTimeSpan:IComparable09:{10:privateuinttotalSeconds;11:12:publicTimeSpan()13:{14:totalSeconds=0;15:}16:17:publicTimeSpan(uintinitialSeconds)18:{19:totalSeconds=initialSeconds;20:}22:publicuintSeconds23:{24:get25:{26:returntotalSeconds;27:}28:29:set30:{31:totalSeconds=value;32:}33:}34:35:publicvirtualintCompareTo(IComparablecomp)36:{37:TimeSpancompareTime=(TimeSpan)comp;38:39:if(totalSeconds>compareTime.Seconds)40:return1;41:elseif(compareTime.Seconds==totalSeconds)42:return0;43:else44:return-1;45:}46:}3548:classSorter49:{50://Sortthecomparableelementsofanarrayinascendingorder51:publicstaticvoidBubbleSortAscending(IComparable[]bubbles)52:{53:boolswapped=true;55:for(inti=0;swapped;i++)56:{57:swapped=false;58:for(intj=0;j<(bubbles.Length-(i+1));j++)59:{60:if(bubbles[j].CompareTo(bubbles[j+1])>0)61:{62:Swap(j,j+1,bubbles);63:swapped=true;64:}65:}66:}67:}69://Swaptwoelementsofanarray70:publicstaticvoidSwap(intfirst,intsecond,IComparable[]arr)71:{72:IComparabletemp;74:temp=arr[first];75:arr[first]=arr[second];76:arr[second]=temp;77:}78:}3680:classT
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版南雄市農(nóng)村集體資產(chǎn)租賃合同3篇
- 二零二五年度國(guó)際商務(wù)培訓(xùn)項(xiàng)目聘用專(zhuān)家合同3篇
- 2025年度二零二五綠色建筑設(shè)計(jì)與施工合同樣本4篇
- 二零二五年度木材加工鋼材買(mǎi)賣(mài)居間合同附帶鋼材加工行業(yè)標(biāo)準(zhǔn)制定4篇
- 二零二五年度天然氣運(yùn)輸與新能源開(kāi)發(fā)合同書(shū)
- 二零二五年度企業(yè)員工職業(yè)發(fā)展路徑規(guī)劃合同
- 2025年度棉布市場(chǎng)調(diào)研與銷(xiāo)售策略制定合同
- 2025年智能家居內(nèi)墻裝飾施工與智能化升級(jí)合同
- 2025年度個(gè)人購(gòu)房擔(dān)保借款合同優(yōu)化版2篇
- 氨吸收塔的設(shè)計(jì)
- 中央2025年國(guó)務(wù)院發(fā)展研究中心有關(guān)直屬事業(yè)單位招聘19人筆試歷年參考題庫(kù)附帶答案詳解
- 2024年09月北京中信銀行北京分行社會(huì)招考(917)筆試歷年參考題庫(kù)附帶答案詳解
- 外呼合作協(xié)議
- 小學(xué)二年級(jí)100以?xún)?nèi)進(jìn)退位加減法800道題
- 保險(xiǎn)公司2025年工作總結(jié)與2025年工作計(jì)劃
- 2024年公司領(lǐng)導(dǎo)在新年動(dòng)員會(huì)上的講話(huà)樣本(3篇)
- 眼科護(hù)理進(jìn)修專(zhuān)題匯報(bào)
- 介入手術(shù)室感染控制管理
- 2024北京初三(上)期末英語(yǔ)匯編:材料作文
- 2024年大型風(fēng)力發(fā)電項(xiàng)目EPC總承包合同
- 禮儀服務(wù)合同三篇
評(píng)論
0/150
提交評(píng)論