版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JAVA語(yǔ)言學(xué)習(xí)問(wèn)題目錄1.靜態(tài)變量2.主方法、構(gòu)造方法、成員方法及this應(yīng)用3.類(lèi)的繼承4.包裝類(lèi)5.數(shù)據(jù)處理類(lèi)6.接口、繼承與多態(tài)1.靜態(tài)成員變量靜態(tài)變量的值可以在類(lèi)中和不同的類(lèi)中共享使用。但是它還是一個(gè)變量,還有可能在使用中被重新賦值,靜態(tài)變量的值在使用過(guò)程中可以被改變。事例packagecom.wsy;publicclassTransferProperty{ inti=47; publicvoidcall(){ System.out.println("調(diào)用call()方法"); for(i=0;i<3;i++){ System.out.print(i+""); if(i==2){ System.out.println("\n"); } } } publicTransferProperty(){
} publicstaticvoidmain(String[]args){ TransferPropertyt1=newTransferProperty(); TransferPropertyt2=newTransferProperty(); t2.i=60; System.out.println("第一個(gè)實(shí)例對(duì)象調(diào)用變量i的結(jié)果:"+t1.i++); t1.call(); System.out.println("第二個(gè)實(shí)例對(duì)象調(diào)用變量i的結(jié)果:"+t2.i); t2.call(); }47476047內(nèi)存中t1,t2兩個(gè)對(duì)象的布局對(duì)象t1對(duì)象t1對(duì)象t2對(duì)象t2運(yùn)算過(guò)程第一個(gè)實(shí)例對(duì)象調(diào)用變量i的結(jié)果:47調(diào)用call()方法012第二個(gè)實(shí)例對(duì)象調(diào)用變量i的結(jié)果:60調(diào)用call()方法012執(zhí)行結(jié)果:可見(jiàn),兩個(gè)對(duì)象的產(chǎn)生是相互獨(dú)立的,改變了t2的值不會(huì)影響到t1的i值。使用static關(guān)鍵字后,執(zhí)行結(jié)果如下:第一個(gè)實(shí)例對(duì)象調(diào)用變量i的結(jié)果:60調(diào)用call()方法012第二個(gè)實(shí)例對(duì)象調(diào)用變量i的結(jié)果:3調(diào)用call()方法012內(nèi)存中t1,t2兩個(gè)對(duì)象的布局47對(duì)象t1對(duì)象t260對(duì)象t1--60對(duì)象t2t2.i重新賦值3對(duì)象t1對(duì)象t2--3調(diào)用call方法后結(jié)論由此可見(jiàn),靜態(tài)變量在內(nèi)存中是共享的,2.主方法、構(gòu)造方法、成員方法及this應(yīng)用publicclassUseCase3{//定義一個(gè)矩形類(lèi) privatefloatheight;//定義類(lèi)的成員變量,表示類(lèi)的屬性 privatefloatwidth;//定義類(lèi)的成員變量,表示類(lèi)的屬性 publicUseCase3(floatheight,floatwidth){//定義一個(gè)構(gòu)造方法〔帶參數(shù)〕 //在構(gòu)造方法中將成員變量進(jìn)行初始化,用this區(qū)別參數(shù)與成員變量 this.height=height;//this的用法 this.width=width; } publicfloatsquare(){//定義一個(gè)成員方法 returnheight*width; } publicstaticvoidmain(Stringargs[]){//定義一個(gè)主方法 UseCase3u=newUseCase3(3.5f,4.5f);//定義一個(gè)對(duì)象 System.out.println(u.square()); }}1.主方法為main2.構(gòu)造方法名與類(lèi)名相同3.類(lèi)中的其他方法為成員方法程序調(diào)用過(guò)程u.square()構(gòu)造方法
UseCase3(floatheight,floatwidth).square()參數(shù)賦值UseCase3(3.5f,4.5f).square()參數(shù)傳遞
returnheight*width3.類(lèi)的繼承publicclassUseCase2extendsUseCase1{ //繼承父類(lèi)UseCase1 publicstaticvoidmain(String[]args){ UseCase1u=newUseCase1();//利用父類(lèi)構(gòu)造對(duì)象,在父類(lèi)中也可用 u.setName("123"); System.out.println(u.getName()); }}publicclassUseCase1{ privateStringname;
publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ =name; System.out.println(); } publicstaticvoidmain(String[]args){ }4.包裝類(lèi)Java是一種面向?qū)ο笳Z(yǔ)言,Java中的類(lèi)把方法與數(shù)據(jù)連接在一起,并構(gòu)成了看碟包含式的處理單元。但在Java中不能定義根本類(lèi)型〔primitivetype〕對(duì)象,為了能將根本類(lèi)型視為對(duì)象來(lái)處理,并能連接相關(guān)的方法,Java為每個(gè)根本類(lèi)型都提供了包裝類(lèi),這樣便可以把這些根本類(lèi)型轉(zhuǎn)換為對(duì)象來(lái)處理了,值得說(shuō)明的是:Java是可以直接處理根本類(lèi)型的,但是在有些情況下我們需要將酚作為對(duì)象來(lái)處理,這時(shí)就需要將其轉(zhuǎn)換為包裝類(lèi)了。4.1Integer類(lèi)的常用方法返回值方法功能描述bytebyteValue()以byte類(lèi)型返回該Integer值intintValue()以int類(lèi)型返回該Integer對(duì)象shortshortValue()以short類(lèi)型返回該Integer對(duì)象booleanEquals(ObjectIntergerObj)比較此對(duì)象與指定的對(duì)象是否相等StringtoString()返回一個(gè)表示該Integer值的String對(duì)象IntegervalueOf(Stringstr)返回保存指定的String值的Integer對(duì)象intparseInt(Stringstr)返回包含在由str指定的字符串中的數(shù)字的等價(jià)整數(shù)值intcompareTo(IntegeranotherInteger)在數(shù)字上比較兩個(gè)Integer對(duì)象。如果這兩個(gè)值相等,則返回0;如果調(diào)用對(duì)象的值小于anotherInteger的數(shù)值,則返回負(fù)值;如果大于則返回正值。在類(lèi)Summation中,實(shí)現(xiàn)將String類(lèi)型數(shù)據(jù)中的元素轉(zhuǎn)換成int型,并將各元素相加。publicclassSummation//創(chuàng)立類(lèi)Summation{ publicstaticvoidmain(Stringargs[]){ //主方法 Stringstr[]={"89","12","10","18","35"}; //定義String數(shù)組,數(shù)組中的每個(gè)元素都是int型 intsum=0; //定義int型變量sum for(inti=0;i<str.length;i++){ //循環(huán)遍歷數(shù)組 intmyint=Integer.parseInt(str[i]); //將數(shù)組中的每個(gè)元素都轉(zhuǎn)化為int型 sum=sum+myint; //將數(shù)組中的各元素相加 } System.out.println("數(shù)組中的各元素之和是:"+sum); //將計(jì)算后結(jié)果輸出 }}4.2Long類(lèi)1、構(gòu)造函數(shù)1.1Long(longnumber),該型函數(shù)以long型變量作為參數(shù)來(lái)創(chuàng)立Long對(duì)象例:Longlon=newLong(213L);1.2Long(Stringstr),該型函數(shù)以String型變量作為參數(shù)來(lái)創(chuàng)立Long對(duì)象例:Longlon=newLong(“213”);注:如果不是以數(shù)值類(lèi)型的字符串作為參數(shù),那么拋出NumberFormatException異常。2.Long類(lèi)的常用方法返回值方法功能描述bytebyteValue()以byte類(lèi)型返回該Long值intintValue()以int類(lèi)型返回該Long值longlongValue()以long型返回該Long值shortshortValue()以short類(lèi)型返回該Long值booleanEquals(ObjectObj)比較兩個(gè)Long對(duì)象StringtoString()返回一個(gè)表示該Long值的String對(duì)象LongparseLong(Stringstr)將String類(lèi)型的參數(shù)值解析為L(zhǎng)ong類(lèi)型的值LongvalueOf(Stringstr)返回表示指定long值的Long實(shí)例intcompareTo(LonganotherLong)在數(shù)字上比較兩個(gè)Long對(duì)象。如果這兩個(gè)值相等,則返回0;如果調(diào)用對(duì)象的值小于anotherLong的數(shù)值,則返回負(fù)值;如果大于則返回正值。5.數(shù)字處理類(lèi)在實(shí)際問(wèn)題中,對(duì)數(shù)字的處理是非常普遍的,比方數(shù)學(xué)問(wèn)題、隨機(jī)問(wèn)題、商業(yè)貨幣問(wèn)題、科學(xué)計(jì)數(shù)問(wèn)題等。為了應(yīng)對(duì)以上問(wèn)題,Java提供了處理相關(guān)問(wèn)題的類(lèi),包括DecimalFormat類(lèi)〔用于格式化數(shù)字〕、Math類(lèi)〔為各種數(shù)學(xué)計(jì)算提供了工具方法〕、Random類(lèi)〔為Java處理隨機(jī)數(shù)問(wèn)題提供了各種方法〕、BigInteger與BigDecimal類(lèi)〔為所有的大數(shù)字的處理提供了相應(yīng)的數(shù)學(xué)運(yùn)算操作方法〕。6.接口、繼承與多態(tài)6.1繼承繼承并不只是擴(kuò)展父類(lèi)的功能,還可以重寫(xiě)父類(lèi)的成員方法。重寫(xiě)〔還可以稱(chēng)為覆蓋〕就是在子類(lèi)中將父類(lèi)的成員方法的名稱(chēng)保存,重寫(xiě)成員方法的實(shí)現(xiàn)內(nèi)容,更改成員方法的存儲(chǔ)權(quán)限,或是修改成員方法的返回值類(lèi)型。在繼承中還有一種特殊的重寫(xiě)方式,子類(lèi)與父類(lèi)的成員方法返回值、方法名稱(chēng)、參數(shù)類(lèi)型及個(gè)數(shù)完全相同,唯一不同的是方法實(shí)現(xiàn)內(nèi)容,這種特殊重寫(xiě)方式被稱(chēng)為重構(gòu)。publicclassTest{ publicTest(){//構(gòu)造方法 } protectedvoiddoSomething(){//成員方法 } protectedTestdoIt(){//方法返回值類(lèi)型為T(mén)est類(lèi)型 returnnewTest(); }}classTest2extendsTest{//繼承父類(lèi) publicTest2(){//構(gòu)造方法 super();//調(diào)用父類(lèi)構(gòu)造方法 super.doSomething();//調(diào)用父類(lèi)成員方法 } publicvoiddoSomethingnew(){//新增方法 } publicvoiddoSomething(){//重寫(xiě)父類(lèi)方法 } protectedTest2doIt(){//重寫(xiě)父類(lèi)方法,返回值為T(mén)est2類(lèi)型 returnnewTest2();}}注:1.當(dāng)重寫(xiě)父類(lèi)方法時(shí),修改方法的修飾權(quán)限只能從小到大的范圍改變。2.當(dāng)重寫(xiě)父類(lèi)方法的返回值類(lèi)型時(shí),要遵循一個(gè)原那么,就是重寫(xiě)的返回值類(lèi)型必須是父類(lèi)中同一方法返回值類(lèi)型的子類(lèi)。3.在繼承的機(jī)制中,當(dāng)創(chuàng)立一個(gè)子類(lèi)對(duì)象時(shí),將包含一個(gè)父類(lèi)對(duì)象,這個(gè)對(duì)象與父類(lèi)創(chuàng)立的對(duì)象是一樣的,二者的區(qū)別在于后者來(lái)自于外部,而前者來(lái)自于子類(lèi)對(duì)象的內(nèi)部。當(dāng)實(shí)例化子類(lèi)對(duì)象時(shí),父類(lèi)對(duì)象也相應(yīng)被實(shí)例化,換句話(huà)說(shuō),在實(shí)例化子類(lèi)對(duì)象時(shí),Java編譯器會(huì)在子類(lèi)的構(gòu)造方法中自動(dòng)調(diào)用父類(lèi)的無(wú)參構(gòu)造方法。以例說(shuō)明:/**驗(yàn)證實(shí)例化子類(lèi)對(duì)象時(shí)自動(dòng)調(diào)用父類(lèi)構(gòu)造方法*/classParent{ Parent(){ System.out.println("調(diào)用父類(lèi)的parent()構(gòu)造方法"); }}classSubParentextendsParent{ SubParent(){ System.out.println("調(diào)用子類(lèi)的SubParent()構(gòu)造方法"); }}publicclassSubroutineextendsSubParent{ Subroutine(){ System.out.println("調(diào)用子類(lèi)的Subroutine()構(gòu)造方法"); } publicstaticvoidmain(String[]args){ Subroutines=newSubroutine(); }調(diào)用父類(lèi)的parent()構(gòu)造方法調(diào)用子類(lèi)的SubParent()構(gòu)造方法調(diào)用子類(lèi)的Subroutine()構(gòu)造方法運(yùn)行結(jié)果說(shuō)明:1.從結(jié)果可以看出:在子類(lèi)Subroutine的主方法中只調(diào)用子類(lèi)的構(gòu)造方法實(shí)例化子類(lèi)對(duì)象,并且在子類(lèi)構(gòu)造方法中沒(méi)有調(diào)用父類(lèi)構(gòu)造方法的任何語(yǔ)句,但是在實(shí)例化子類(lèi)對(duì)象時(shí)它相應(yīng)調(diào)用了父類(lèi)的構(gòu)造方法。同時(shí)在結(jié)果中看到調(diào)用構(gòu)造方法的順序,首先是頂級(jí)父類(lèi),然后是上一級(jí)父類(lèi),最后是子類(lèi)。也就是說(shuō)實(shí)例化子類(lèi)對(duì)象時(shí),首先實(shí)例化父類(lèi)的對(duì)象,然后再實(shí)例化子類(lèi)對(duì)象,所以子類(lèi)在構(gòu)造方法訪(fǎng)問(wèn)父類(lèi)的構(gòu)造方法之前,父類(lèi)已經(jīng)完成實(shí)例化操作。2.在實(shí)例化子類(lèi)對(duì)象時(shí),父類(lèi)無(wú)參構(gòu)造方法將被自動(dòng)調(diào)用,但有參構(gòu)造方法并不能被調(diào)用,只能依賴(lài)于super關(guān)鍵字顯式地調(diào)用父類(lèi)的構(gòu)造方法。3.如果使用finalize()方法對(duì)對(duì)象進(jìn)行清理,需要確保子類(lèi)的finalize()方法的最后一個(gè)是調(diào)用父類(lèi)的finalize()方法,以保證當(dāng)垃圾回收對(duì)象占用內(nèi)在內(nèi)存時(shí),對(duì)象的所有局部都能被正常終止。TestTest()構(gòu)造方法ProtectedvoiddoSomething()ProtectedTestdoIt()父類(lèi)子類(lèi)Test2Test2()構(gòu)造方法ProtectedvoiddoSomethingnew()PublicvoiddoSomething()ProtectedTestdoIt()繼承Test與Test2類(lèi)之間的繼承關(guān)系6.2Object類(lèi)在Java中,所有的類(lèi)都直接或間接繼承了類(lèi),Object類(lèi)是比較特殊的類(lèi),它是所有類(lèi)的父類(lèi),是Java類(lèi)層中最高層類(lèi),實(shí)質(zhì)上Java中任何一個(gè)類(lèi)都是它的子類(lèi)。因此,在定義類(lèi)時(shí)省略了extendsObject關(guān)鍵字。在Object類(lèi)中主要包括clone(),finalize(),euqals(),toString()等方法。其中常用的兩個(gè)方法為后面兩個(gè),由于所有的類(lèi)都是Object類(lèi)的子類(lèi),所以任何類(lèi)都可以重寫(xiě)Object類(lèi)中的方法。注:Object類(lèi)中的getClass(),notify(),notifyAll(),wait()等方法不能被重寫(xiě),因?yàn)檫@些方法定義為final類(lèi)型。Object類(lèi)中的幾個(gè)重要方法
getClass()方法它是Object類(lèi)定義的方法,返回對(duì)象執(zhí)行時(shí)的Class實(shí)例,然后使用此實(shí)例調(diào)用getName()方法可以取得類(lèi)的名稱(chēng)。語(yǔ)法:getClass().getName();toString()方法將一個(gè)對(duì)象返回為字符串形式,返回一個(gè)String實(shí)例。在實(shí)際的應(yīng)用中通常重寫(xiě)此方法,為對(duì)象提供一個(gè)特定的輸出模式。當(dāng)這個(gè)類(lèi)轉(zhuǎn)換為字符串或與字符串連接時(shí),將自動(dòng)調(diào)用重寫(xiě)的此方法。以例說(shuō)明:publicclassObjectInstance{ publicStringtoString(){ return"在"+getClass().getName()+"類(lèi)中重寫(xiě)toString()方法"; } publicstaticvoidmain(String[]args){ //TODO自動(dòng)生成方法存根 System.out.println(newObjectInstance()); }實(shí)例化對(duì)象}等價(jià)于:ObjectInstanceP=newObjectInstance()C:\lianxi>javaObjectInstance在ObjectInstance類(lèi)中重寫(xiě)toString()方法運(yùn)行結(jié)果在實(shí)例中重寫(xiě)父類(lèi)Object類(lèi)的toString()方法中使用Object類(lèi)中的getClass()方法獲取當(dāng)前運(yùn)行的類(lèi)名,定義一段輸出字符串,當(dāng)用戶(hù)打印ObjectInstance類(lèi)對(duì)象時(shí),將自動(dòng)調(diào)用toString〔〕方法。6.3對(duì)象類(lèi)型的轉(zhuǎn)換向上轉(zhuǎn)型將子類(lèi)對(duì)象看作是父類(lèi)對(duì)象被稱(chēng)為“向上轉(zhuǎn)型”。由于是從一個(gè)較具體的類(lèi)到較抽象的類(lèi)之間的轉(zhuǎn)換,所以是平安的。向下轉(zhuǎn)型當(dāng)在程序中使用向下轉(zhuǎn)型技術(shù)時(shí),必須使用顯式類(lèi)型轉(zhuǎn)換,向編譯器指明將父類(lèi)對(duì)象轉(zhuǎn)換為哪一種類(lèi)型的子類(lèi)對(duì)象。6.4instanceof判斷對(duì)象類(lèi)型當(dāng)在程序中執(zhí)行向下轉(zhuǎn)型操作時(shí),如果父類(lèi)對(duì)象不是子類(lèi)對(duì)象的實(shí)例,就會(huì)發(fā)生ClassCast-Exception異常,所以在執(zhí)行向下轉(zhuǎn)型時(shí)需要判斷父類(lèi)是否為子類(lèi)對(duì)象的實(shí)例。這個(gè)判斷通常使用instanceof操作符來(lái)完成。可以使用它判斷是否一個(gè)類(lèi)實(shí)現(xiàn)了某個(gè)接口,也可以用它判斷一個(gè)實(shí)例對(duì)象是否屬于一個(gè)類(lèi)。instanceof的語(yǔ)法格式:myobjectinstanceofExampleClass〔返回布爾值〕其中:myobject為某類(lèi)的對(duì)象引用。ExampleClass為某個(gè)類(lèi)classQuadrangle{ publicstaticvoiddraw(Quadrangleq){ //SomeSentence }}classSquareextendsQuadrangle{ }classAnything{ }publicclassParallelogramextendsQuadrangle{publicstaticvoidmain(Stringargs[]){ Quadrangleq=newQuadrangle();//實(shí)例化父類(lèi)對(duì)象if(qinstanceofParallelogram){//判斷父類(lèi)對(duì)象是否Parallelogram子類(lèi)的一個(gè)實(shí)例 Parallelogramp=(Parallelogram)q;//向下轉(zhuǎn)型操作 System.out.println("1="+(qinstanceofParallelogram)); } System.out.println("2="+(qinstanceofParallelogram));if(qinstanceofSquare){//判斷父類(lèi)對(duì)象是否Parallelogram子類(lèi)的一個(gè)實(shí)例 Squares=(Square)q;//向下轉(zhuǎn)型操作 System.out.println("3="+(qinstanceofParallelogram)); } System.out.println("4="+(qinstanceofSquare));//由于q對(duì)象不為Anything類(lèi)的對(duì)象,所以這條語(yǔ)句很明顯是錯(cuò)誤的 //System.out.println(qinstanceofAnything); } }C:\lianxi>javaParallelogram2=false4=false6.5方法的重載就是在同一個(gè)類(lèi)中允許存在一個(gè)以上的同名方法,只要這些方法的參數(shù)個(gè)數(shù)或類(lèi)型不同即可。雖然在方法重載中可以使兩個(gè)方法的返回值不同,但只有返回值不同并缺乏以區(qū)分兩個(gè)方法的重載,還是需要通過(guò)參數(shù)的個(gè)數(shù)以級(jí)參數(shù)的類(lèi)型來(lái)設(shè)置兩個(gè)方法的重載。另一個(gè)重載方法是不定長(zhǎng)參數(shù)方法:Publicstaticintadd(int…a){//定義不定長(zhǎng)參數(shù)方法 ints=0; for(inti=0;i<a.length;i++) s+=a[i];//做參數(shù)累計(jì)操作 returns;}//將結(jié)果返回publicclassOverLoadTest{ publicstaticintadd(inta,intb){ returna+b; }//定義一個(gè)方法 publicstaticdoubleadd(doublea,doubleb){ returna+b; }//定義與第一個(gè)方法相同名稱(chēng)、參數(shù)類(lèi)型不同的方法 publicstaticintadd(inta){ returna; }//定義與第一個(gè)方法參數(shù)個(gè)數(shù)不同的方法 publicstaticintadd(inta,doubleb){ return1; }//定義與第一個(gè)方法相同名稱(chēng)、參數(shù)類(lèi)型不同的方法 publicstaticintadd(doublea,intb){ return1; }//這個(gè)方法與前一個(gè)方法參數(shù)次序不同 publicstaticvoidmain(Stringargs[]){ System.out.println("調(diào)用add(int,int)方法:"+add(1,2)); System.out.println("調(diào)用add(double,double)方法:"+add(2.1,3.3)); System.out.println("調(diào)用add(int)方法:"+add(1)); }}C:\lianxi>javaOverLoadTest調(diào)用add(int,int)方法:3調(diào)用add(double,double)方法:5.4調(diào)用add(int)方法:16.6多態(tài)利用多態(tài)可以使程序具有良好的擴(kuò)展性,程序可以對(duì)所有類(lèi)對(duì)象進(jìn)行通用的處理。以不同類(lèi)對(duì)象為參數(shù)調(diào)用同一方法可以處理不同的問(wèn)題,使用多態(tài)節(jié)省了開(kāi)發(fā)和維護(hù)時(shí)間,因?yàn)槌绦騿T無(wú)須在所有的子類(lèi)中定義執(zhí)行相同功能的方法,防止了大量重復(fù)代碼的開(kāi)發(fā),同時(shí)只要實(shí)例化一個(gè)繼承父類(lèi)的子類(lèi)對(duì)象即可調(diào)用相應(yīng)的方法,這里只要維護(hù)父類(lèi)中的這個(gè)方法即可。6.7抽象類(lèi)與接口在解決實(shí)際問(wèn)題時(shí),一般將父類(lèi)定義為抽象類(lèi),需要使用這個(gè)父類(lèi)進(jìn)行繼承與多態(tài)處理。回想繼承和多態(tài)原理,繼承樹(shù)中越是在上方的類(lèi)越抽象。語(yǔ)法:PublicabstractclassTest{ abstractvoidtestAbstract();//定義抽象方法 }其中,abstract是指定義抽象類(lèi)關(guān)鍵字。使用abstract關(guān)鍵字定義的類(lèi)稱(chēng)為抽象類(lèi),而使用這個(gè)關(guān)鍵字定義的方法稱(chēng)為抽象方法,抽象方法沒(méi)有方法體,這個(gè)方法本身沒(méi)有任何意義,除非它被重寫(xiě),而承載這個(gè)抽象方法的抽象類(lèi)就必須被繼承,實(shí)際上抽象類(lèi)除了被繼承之外沒(méi)有任何意義。反過(guò)來(lái)講,如果聲明一個(gè)抽象的方法,就必須將承載這個(gè)抽象方法的類(lèi)定義為抽象類(lèi),不可能在非抽象類(lèi)中獲取抽象方法。換句話(huà)說(shuō),只要類(lèi)中有一個(gè)抽象方法,此類(lèi)就被標(biāo)記為抽象類(lèi)。抽象類(lèi)被繼承后需要實(shí)現(xiàn)其中所有的抽象方法,也就是保證相同的方法名稱(chēng)、參數(shù)列表和相同返回值類(lèi)型創(chuàng)立出非抽象方法,當(dāng)然也可以是抽象方法。以下圖說(shuō)明了繼承抽象類(lèi)的關(guān)系。Abtract圖形類(lèi)abstractvoiddraw()voiddoString()三角形類(lèi)voiddraw()voiddoAnything()四邊形類(lèi)voiddraw()voiddoAnything()正方形類(lèi)voiddraw()voiddoAnything()voiddraw()voiddoAnythingExtendsExtends抽象類(lèi)繼承關(guān)系由上圖看出,繼承抽象類(lèi)的所有子類(lèi)需要將抽象類(lèi)中的抽象方法進(jìn)行覆蓋。這樣在多態(tài)機(jī)制中,可以將父類(lèi)修改為抽象類(lèi),將draw()方法設(shè)置為抽象方法,然后每個(gè)子類(lèi)都重寫(xiě)這個(gè)方法來(lái)處理。但這又會(huì)出現(xiàn)我們探討多態(tài)時(shí)討論的問(wèn)題,程序中會(huì)有太多冗余的代碼,同時(shí)這樣的父類(lèi)局限性很大,也許某個(gè)不需要draw()方法的子類(lèi)也不得不重寫(xiě)draw()方法。如果將draw()方法放置在另外一個(gè)類(lèi)中,這樣讓那些需要draw()方法的類(lèi)繼承該類(lèi),而不需要draw()方法的類(lèi)繼承圖形類(lèi),但所有的子類(lèi)都需要圖形類(lèi),因?yàn)檫@些類(lèi)是從圖形類(lèi)中被導(dǎo)出的,同時(shí)某些類(lèi)還需要draw()方法,但是在Java中規(guī)定,類(lèi)不能同時(shí)繼承多個(gè)父類(lèi),面臨這種問(wèn)題,接口的概念出現(xiàn)了。6.7接口接口是抽象類(lèi)的延伸,可以將它看作是純粹的抽象類(lèi),接口中的所有方法都沒(méi)有方法體。接口使用interface關(guān)鍵字進(jìn)行定義,語(yǔ)法publicinterfacedrawTest{voiddraw();//接口內(nèi)的方法,省略abstract關(guān)鍵字 }注:1.public:接口可以像類(lèi)一樣被權(quán)限修飾符修飾,但public關(guān)鍵字僅限于接口在與其同名的文件中被定義2.interface:定義接口關(guān)鍵字。3.drawTest:接口名稱(chēng)。一個(gè)類(lèi)實(shí)現(xiàn)一個(gè)接口可以使用implements關(guān)鍵字,代碼如下:PublicclassParallelogramextendsQuadrangleimplementsdrawTest{…//}注意:在接口中定義的方法必須被定義為public或者abstract形式,其他修飾不被Java編譯器所認(rèn)可,如果不將該方法聲明為public形式,它也是public。7Swing程序設(shè)計(jì)7.1Swing包Java.awt.ComponentSwing組件的類(lèi)層次繼承關(guān)系常用Swing組件概述組件名稱(chēng)定義JButton代表Swing按鈕,按鈕可以帶圖片或文字JCheckBox代表Swing中復(fù)選框組件JComBox代表下拉列表框,在下拉顯示區(qū)有多選JFrame代表Swing的框架類(lèi)JDialog代表Swing版本的對(duì)話(huà)框JLabel代表Swing中的標(biāo)簽組件JRadioButton代表Swing的單選按鈕JList代表能夠在用戶(hù)界面中顯示一系列條目JTextField代表文本框JPasswordField代表密碼框JTextArea代表Swing中的文本區(qū)域JOptionPane代表Swing中的一些對(duì)話(huà)框7.2常用窗體 1〕JFrame窗體 它是一個(gè)容器,是Swing程序中各個(gè)組件的載體,可以將JFrame看作是承載這些Swing組件的容器,在開(kāi)發(fā)應(yīng)用程序時(shí),可以通過(guò)繼承類(lèi)創(chuàng)立一個(gè)窗體,在這個(gè)窗口中添加組件,同時(shí)為組件設(shè)置事件。由于該窗體繼承了JFrame類(lèi),所以它擁有一些最大化、最小化、關(guān)閉的按鈕。 語(yǔ)法格式: JFramejf=newJFrame(title); Containercontainer=jf.getContertPane(); jf:JFrame類(lèi)的對(duì)象。 container:Container類(lèi)的對(duì)象,可以使用JFrame對(duì)象調(diào)用getContentPane()方法獲取。importjava.awt.*;//導(dǎo)入AWT包importjavax.swing.*;//導(dǎo)入Swing包publicclassExample1extendsJFrame{//定義一個(gè)類(lèi)繼承JFrame類(lèi) publicvoidCreateJFrame(Stringtitle){//定義一個(gè)CreateJFrame()方法 JFramejf=newJFrame(title);//實(shí)例化一個(gè)JFrame對(duì)象 Containercontainer=jf.getContentPane();//獲取一個(gè)容器 JLabeljl=newJLabel(“是Swing程序中各”);//創(chuàng)立一個(gè)JLabel標(biāo)簽 //使標(biāo)簽上的文字居中jl.setHorizontalAlignment(SwingConstants.CENTER); container.add(jl);//將標(biāo)簽添加到容器中 container.setBackground(Color.red);//設(shè)置窗口的背景顏色 jf.setVisible(true);//使窗體可視 jf.setSize(100,80);//設(shè)置窗體大小 jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } publicstaticvoidmain(Stringargs[]){//在主方法中調(diào)用createJFrame newExample1().CreateJFrame("我的JFrame窗體"); }} JFrame類(lèi)的常用構(gòu)造方法包括兩種形式: publicJFrame()和publicJFrame(Stringtitle).分別為無(wú)參和有參的構(gòu)造方法,無(wú)參創(chuàng)立一個(gè)不可見(jiàn)、沒(méi)有標(biāo)題的新窗體;有參在實(shí)例化該JFrame對(duì)象時(shí)創(chuàng)立一個(gè)不可見(jiàn)但具有標(biāo)題的窗體。 Java為窗體關(guān)閉提供了幾種方式:DO_NOTHING_ON_CLOSE//什么都不做關(guān)閉窗體DISPOSE_ON_CLOSE//任何注冊(cè)監(jiān)聽(tīng)程序?qū)ο蠛笞詣?dòng)隱藏并釋放窗體HIDE_ON_CLOSE//表示隱藏窗口的默認(rèn)窗口關(guān)閉EXIT_ON_CLOSE//表示退出應(yīng)用程序默認(rèn)窗口關(guān)閉2)JDialog窗體 Swing組件中的對(duì)話(huà)框,繼承了AWT組件中類(lèi)。其功能是從一個(gè)窗體中彈出另一人窗體,實(shí)質(zhì)是另一種類(lèi)型的窗體,與JFrame窗體類(lèi)似。常用的構(gòu)造方法如下:publicJDialog():創(chuàng)立一個(gè)沒(méi)有標(biāo)題和父窗體的對(duì)話(huà)框publicJDialog(Framef):創(chuàng)立一個(gè)指定父窗體的對(duì)話(huà)框,但該窗體沒(méi)有標(biāo)題。publicJDialog(Framef,booleanmodel):創(chuàng)立一個(gè)指定類(lèi)型的對(duì)話(huà)框,并指定父窗體,但該窗體沒(méi)有指定標(biāo)題。publicJDialog(Framef,Stringtitle):創(chuàng)立一個(gè)指定標(biāo)題和父窗體的對(duì)話(huà)框。publicJDialog(Framef,Stringtitle,booleanmodel):創(chuàng)立一個(gè)指定標(biāo)題、窗體和模式的對(duì)話(huà)框。packagecom.wsy;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassMyJDialogextendsJDialog{ publicMyJDialog(){ super(newMyFrame(),"第一個(gè)JDialog窗體",true); Containercontainer=getContentPane(); container.add(newJLabel("這是一個(gè)對(duì)話(huà)框")); setSize(100,100); } publicstaticvoidmain(Stringargs[]){ newMyJDialog(); }}classMyFrameextendsJFrame{ publicMyFrame(){
Containercontainer=getContentPane(); container.setLayout(null); JLabeljl=newJLabel("這是一個(gè)JFrame窗體"); jl.setHorizontalAlignment(SwingConstants.CENTER); container.add(jl); JButtonbl=newJButton("彈出對(duì)話(huà)框"); bl.setBounds(10,10,100,21); bl.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ newMyJDialog().setVisible(true);
} }); container.add(bl); container.setBackground(Color.white); setSize(200,200); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); setVisible(true); }}//packagecom.wsy;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;classMyJDialogextendsJDialog{ publicMyJDialog(){ Containercontainer=getContentPane(); JLabeljf=newJLabel("thisisme"); jf.setHorizontalAlignment(SwingConstants.LEFT); container.add(jf); setSize(100,100); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); setVisible(true); }
}publicclassMyFrameextendsJFrame{ publicMyFrame(){
Containercontainer=getContentPane(); container.setLayout(null); JLabeljl=newJLabel("這是一個(gè)JFrame窗體"); jl.setHorizontalAlignment(SwingConstants.CENTER); container.add(jl); JButtonbl=newJButton("彈出對(duì)話(huà)框"); bl.setBounds(10,10,100,21); bl.addActionListener(newActionListener(){ publicvoidactionPerformed(ActionEvente){ newMyJDialog().setVisible(true);
} }); container.add(bl); container.setBackground(Color.red); setSize(200,200); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); setVisible(true); } publicstaticvoidmain(Stringargs[]){ newMyFrame(); }}3〕標(biāo)簽的使用 標(biāo)簽由JLabel類(lèi)定義,它的父類(lèi)為JComponent類(lèi)。標(biāo)簽可以顯示一行只讀文本、一個(gè)圖像或帶圖像的文本,它并不能產(chǎn)生任何類(lèi)型的事件,只是簡(jiǎn)單地顯示文本和圖片,但是可以使用標(biāo)簽的特性指定標(biāo)簽上文本的對(duì)齊方式。其構(gòu)造方法:publicJLabel():創(chuàng)立一個(gè)不帶圖標(biāo)和文本的JLabel對(duì)象publicJLabel(Iconicon)創(chuàng)立一個(gè)帶圖標(biāo)的JLabel對(duì)象publicJLabel(Iconicon,intaligment)創(chuàng)立一個(gè)帶圖標(biāo)的JLabel對(duì)象,并設(shè)置圖標(biāo)水平對(duì)齊方式。publicJLabel(Stringtext,intaligment)創(chuàng)立一個(gè)帶文本的JLabel對(duì)象,并設(shè)置文字水平對(duì)齊方式publicJLabel(Stringtext,Iconicon,intaligment)創(chuàng)立一個(gè)帶文本、帶圖標(biāo)的JLabel對(duì)象,并設(shè)置標(biāo)簽內(nèi)容的水平對(duì)齊方式4〕圖標(biāo)的使用 Swing中的圖標(biāo)可以放置在按鈕、標(biāo)簽等組件上,用于描述組件的用途。圖標(biāo)可以用Java支持的圖片文件類(lèi)型進(jìn)行創(chuàng)立,也可以使用類(lèi)提供的功能方法來(lái)創(chuàng)立。創(chuàng)立圖標(biāo) 在Swing中通過(guò)Icon接口來(lái)創(chuàng)立圖標(biāo),可以在創(chuàng)立時(shí)給定圖標(biāo)的大小、顏色等特性。如果使用Icon接口,必須實(shí)現(xiàn)Icon接口中的3個(gè)方法。publicintgetIconHeight()獲取圖表長(zhǎng)publicintgetIconWidth()獲取圖表寬publicvoidpaintIcon(Componentarg0,Graphicsarg1,intarg2,intarg3)用于實(shí)現(xiàn)在指定坐標(biāo)位置畫(huà)圖//packagecom.wsy;importjava.awt.*;importjavax.swing.*;publicclassDrawIconimplementsIcon{ privateintwidth; privateintheight; publicstaticvoidCFrame(Stringtitle){ JFramejf=newJFrame(title); DrawIconicon=newDrawIcon(55,35); JLabelj=newJLabel("測(cè)試",icon,SwingConstants.CENTER); Containerc=jf.getContentPane(); c.add(j); jf.setSize(300,300); jf.setVisible(true); jf.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); } publicintgetIconHeight(){ returnthis.height; } publicintgetIconWidth(){ returnthis.width;} publicDrawIcon(intwidth,intheight){ this.width=width; this.height=height; } publicvoidpaintIcon(Componentarg0,Graphicsarg1,intx,inty){ arg1.fillOval(x,y,width,height); } publicstaticvoidmain(String[]args){ DrawIcon.CFrame("創(chuàng)立一個(gè)標(biāo)題窗口"); }} 在上例中,由于DrawIcon類(lèi)繼承了Icon接口,所以在該類(lèi)中必須實(shí)現(xiàn)Icon接口中定義的所有方法,其中在實(shí)現(xiàn)paintIcon〔〕方法中使用Graphics類(lèi)中的方法繪制一個(gè)圓形的圖標(biāo),其余實(shí)現(xiàn)接口的方法為返回圖標(biāo)長(zhǎng)與寬。在DrawIcon類(lèi)的構(gòu)造方法中設(shè)置了圖標(biāo)的長(zhǎng)與寬,這樣如果需要在窗體中使用圖標(biāo),就可以使用如下代碼創(chuàng)立圖標(biāo)。 DrawIconicon=newDrawIcon(intx,inty)使用圖片圖標(biāo) Swing中的圖標(biāo)除了繪制之外,還可以使用某個(gè)特定的圖片創(chuàng)立。Swing利用類(lèi)根據(jù)現(xiàn)有圖片創(chuàng)立圖標(biāo),ImageIcon類(lèi)實(shí)現(xiàn)了Icon接口,同時(shí)Java支持多種圖片格式。ImageIcon類(lèi)有多個(gè)構(gòu)造方法。publicImageIcon();該構(gòu)造方法創(chuàng)立一個(gè)通用的ImageIcon對(duì)象,當(dāng)真正需要設(shè)置圖片時(shí)再使用ImageIcon對(duì)象調(diào)用setImage(Imageimage)方法來(lái)操作publicImageIcon(Imageimage):可以直接從圖片源創(chuàng)立圖標(biāo)publicImageIcon(Imageimage,Stringdescription):除了可以從圖片源創(chuàng)立圖標(biāo)之外,還可以為這個(gè)圖標(biāo)添加簡(jiǎn)短的描述,但這個(gè)描述不會(huì)在圖標(biāo)上顯示,可以使用getDescription()方法獲取這個(gè)描述。publicImageIcon(URLurl);該構(gòu)造方法利用網(wǎng)絡(luò)上的圖像文件創(chuàng)立圖標(biāo)//packagecom.wsy;importjava.awt.*;//導(dǎo)入AWT包import.URL;importjavax.swing.*;//導(dǎo)入Swing包publicclassExample1extendsJFrame{//定義一個(gè)類(lèi)繼承JFrame類(lèi) publicvoidCreateJFrame(Stringtitle){//定義一個(gè)CreateJFrame()方法 JFramejf=newJFrame(title);//實(shí)例化一個(gè)JFrame對(duì)象 Containercontainer=jf.getContentPane();//獲取一個(gè)容器 Labeljl=newJLabel("這是一個(gè)JFrame窗體",JLabel.CENTER); URLurl=Example1.class.getResource("imageButtoo.jpg"); Iconicon=newImageIcon(url);//實(shí)例化Icon對(duì)象 jl.setIcon(icon);//為標(biāo)簽設(shè)置圖片 jl.setHorizontalAlignment(SwingConstants.CENTER);//設(shè)置文字在中間 jl.setOpaque(true);//設(shè)置標(biāo)簽為不透明狀態(tài)〔容器背景色不起作用〕 container.add(jl);//將標(biāo)簽添加到容器中 container.setBackground(Color.green);//設(shè)置標(biāo)簽的背景顏色 jf.setVisible(true);//使用窗體可見(jiàn) jf.setSize(200,150);//設(shè)置窗體大小 jf.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); }//設(shè)置窗體關(guān)閉模式 publicstaticvoidmain(Stringargs[]){//在主方法中調(diào)用CreateJFrame()方法 newExample1().CreateJFrame("創(chuàng)立一個(gè)JFrame窗體"); }}創(chuàng)立一個(gè)JLabel標(biāo)簽并使文字居中獲取圖片的URLjl.setOpaque(true);起作用注釋掉//jl.setOpaque(true);注:圖片與程序要在同一個(gè)文件夾中7.3常用布局管理器1〕絕對(duì)布局 在Swing中,除了使用布局管事器,還可以使用絕對(duì)布局,它是指硬性指定組件在容器中的位置和大小,可以使用絕對(duì)坐標(biāo)的方式來(lái)指定組件的位置。 使用絕對(duì)布局的步驟如下:使用Container.setLayout(null)方法取消布局管理器。使用Component.setBounds()方法設(shè)置每個(gè)組件的大小與位置//packagecom.wsy;importjava.awt.Container;//導(dǎo)入包importjavax.swing.*;//導(dǎo)入包publicclassAbsolutePositionextendsJFrame{ publicAbsolutePosition(){ setTitle(“本窗體使用絕對(duì)布局”);//設(shè)置該窗體的標(biāo)題 setLayout(null);//使該窗體取消布局管理器設(shè)置 setBounds(500,500,200,150);//絕對(duì)定位窗體的位置與大小 Containerc=getContentPane();//創(chuàng)立容器對(duì)象 JButtonb1=newJButton(“按鈕1”);//創(chuàng)立按鈕 JButtonb2=newJButton(“按鈕2”);//創(chuàng)立按鈕 b1.setBounds(10,30,80,30);//設(shè)置按鈕的位置與大小 b2.setBounds(60,70,100,20); c.add(b1);//將按鈕添加到容器中 c.add(b2); setVisible(true);//使窗體可見(jiàn) setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); } publicstaticvoidmain(String[]args){ newAbsolutePosition(); }}2〕流布局管理器〔FlowLayout〕 它是布局管理器中最根本的布局管理器,它像“流”一樣從左到右擺放組件,直到占據(jù)了這一行的所有空間,然后再向下移動(dòng)一行,默認(rèn)情況下,組件在每一行上都是居中排列的,但是通過(guò)設(shè)置更改組件在每一行的位置。其構(gòu)造方法有:publicFlowLayout()publicFlowLayout(intalignment)publicFlowLayout(intalignment,inthorizGap,intvertGap) 其中參數(shù)alignment表示使用流布局管理器后組件在每一行的具體擺放位置,值為:FlowLayout.LEFT=0//左對(duì)齊FlowLayout.CENTER=1//FlowLayout.RIGHT=2右對(duì)3〕邊界布局管理器〔BorderLayout〕它是Swing組件的默認(rèn)布局模式,可將容器分為5個(gè)區(qū)域。成員變量含義BorderLayout.NORTH在容器中添加組件時(shí),置于頂端BorderLayout.SOUTH在容器中添加組件時(shí),置于底端BorderLayout.EAST在容器中添加組件時(shí),置于右端BorderLayout.WEST在容器中添加組件時(shí),置于左端BorderLayout.CENTER在容器中添加組件時(shí),置于中間packagecom.wsy;importjava.awt.*;importjavax.swing.*;publicclassBorderLayoutPositionextendsJFrame{String[]border={BorderLayout.CENTER,BorderLayout.NORTH,BorderLayout.SOUTH,BorderLayout.WEST,BorderLayout.EAST}; String[]buttonName={"centerbutton","northbutton","southbutton","westbutton","eastbutton"}; publicBorderLayoutPosition(){ setTitle("這個(gè)窗體使用邊界布局管理器"); Containerc=getContentPane(); setLayout(newBorderLayout()); for(inti=0;i<border.length;i++){ c.add(border[i],newJButton(buttonName[i])); } setSize(350,200); setVisible(true); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); } publicstaticvoidmain(String[]args){ newBorderLayoutPosition(); }}4〕網(wǎng)格布局管理器〔GridLayout〕構(gòu)造方法publicGridLayout(introws,intcolumns)publicGridLayout(introws,intcolumns,inthorizGap,intvertGap) 其中rows與columns參數(shù)代表網(wǎng)格的行數(shù)與列數(shù),后兩個(gè)為間距。如下例。//packagecom.wsy;importjava.awt.*;importjavax.swing.*;publicclassGridLayoutPositionextendsJFrame{ publicGridLayoutPosition(){ Containerc=getContentPane(); setLayout(newGridLayout(7,3,5,5)); for(inti=0;i<20;i++){ c.add(newJButton("button"+i)); } setSize(300,300); setTitle("這是一個(gè)使用網(wǎng)格布局管理器的窗體"); setVisible(true); c.setBackground(Color.green); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } publicstaticvoidmain(String[]args){ newGridLayoutPosition(); }}7.4常用面板面板也是一個(gè)Swing容器,因?yàn)樗^承類(lèi):。它可以作為容器容納其他組件,但它也必須被添加到其他容器中。1〕JPanel面板 繼承類(lèi)://packagecom.wsy;importjava.awt.*;importjavax.swing.*;publicclassJPanelTestextendsJFrame{ publicJPanelTest(){ Containerc=getContentPane(); c.setLayout(newGridLayout(2,1,10,10)); JPanelp1=newJPanel(newGridLayout(1,3,10,10)); JPanelp2=newJPanel(newGridLayout(1,2,10,10)); JPanelp3=newJPanel(newGridLayout(1,2,10,10)); JPanelp4=newJPanel(newGridLayout(2,1,10,10)); p1.setBackground(Color.red); p2.setBackground(Color.red); p3.setBackground(Color.red); p4.setBackground(Color.red); p1.add(newJButton("1"));p1.add(newJButton("2")); p1.add(newJButton("3"));p2.add(newJButton("4")); p2.add(newJButton("5"));p3.add(newJButton("6")); p3.add(newJButton("7"));p4.add(newJButton("8")); p4.add(newJButton("9")); c.add(p1); c.add(p2); c.a
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 21219-21:2025 EN Intelligent transport systems - Traffic and travel information (TTI) via transport protocol experts group,generation 2 (TPEG2) - Part 21: Geographic lo
- 《環(huán)境安全教育資料》課件
- 2024年隔離酒店消防安全應(yīng)急預(yù)案
- 單位管理制度合并匯編人員管理篇
- 單位管理制度分享大全【職工管理】十篇
- 《種按摩康復(fù)療法》課件
- 單位管理制度呈現(xiàn)合集【職員管理篇】十篇
- 單位管理制度呈現(xiàn)大合集【員工管理篇】十篇
- 《電子商務(wù)新技術(shù)》課件
- 2024年地稅個(gè)人年度工作總結(jié)
- (完整版)光伏施工質(zhì)量控制重點(diǎn)
- 微積分試卷及規(guī)范標(biāo)準(zhǔn)答案6套
- 藍(lán)色國(guó)家科學(xué)基金16.9杰青優(yōu)青人才科學(xué)基金答辯模板
- 銷(xiāo)售儲(chǔ)備培養(yǎng)方案
- 《南亞》優(yōu)教課件(第1課時(shí))
- 【電動(dòng)汽車(chē)兩擋變速器結(jié)構(gòu)設(shè)計(jì)10000字(論文)】
- 非固化橡膠瀝青防水涂料技術(shù)交底
- 高二期末考試動(dòng)員主題班會(huì)
- 易錯(cuò)題(試題)-2024一年級(jí)上冊(cè)數(shù)學(xué)北師大版含答案
- 滕州市九年級(jí)上學(xué)期期末語(yǔ)文試題(原卷版+解析版)
- EPC項(xiàng)目投標(biāo)人承包人工程經(jīng)濟(jì)的合理性分析、評(píng)價(jià)
評(píng)論
0/150
提交評(píng)論