Java語(yǔ)言程序設(shè)計(jì)第2版(鄭莉)課后習(xí)題答案_第1頁(yè)
Java語(yǔ)言程序設(shè)計(jì)第2版(鄭莉)課后習(xí)題答案_第2頁(yè)
Java語(yǔ)言程序設(shè)計(jì)第2版(鄭莉)課后習(xí)題答案_第3頁(yè)
Java語(yǔ)言程序設(shè)計(jì)第2版(鄭莉)課后習(xí)題答案_第4頁(yè)
Java語(yǔ)言程序設(shè)計(jì)第2版(鄭莉)課后習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩161頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Java語(yǔ)言程序設(shè)計(jì)第2版(鄭莉)第二章習(xí)題答案什么是對(duì)象、類,它們之間的聯(lián)系?答:1)對(duì)象是包含現(xiàn)實(shí)世界物體特征的抽象實(shí)體,它反映系統(tǒng)為之保存信息和與它交互的能力。對(duì)象是一些屬性及服務(wù)的封裝體,在程序設(shè)計(jì)領(lǐng)域,可以用“對(duì)象=數(shù)據(jù)+作用于這些數(shù)據(jù)上的操作”來表示。現(xiàn)實(shí)生活中對(duì)象是指客觀世界的實(shí)體;在程序中對(duì)象是指一組變量和相關(guān)方法的集合。2)類是既有相同操作功能和相同的數(shù)據(jù)格式的對(duì)象的集合與抽象!3)兩者的關(guān)系:對(duì)象是類的具體實(shí)例.。什么是面向?qū)ο蟮某绦蛟O(shè)計(jì)方法?它有那些基本特征?答:面向?qū)ο蟪绦蛟O(shè)計(jì)從所處理的數(shù)據(jù)入手,以數(shù)據(jù)為中心而不是以服務(wù)為中心來描述系統(tǒng)。它把編程問題視為一個(gè)數(shù)據(jù)集合,數(shù)

2、據(jù)相對(duì)于功能而言,具有更強(qiáng)的穩(wěn)定性。它的特征:抽象,封裝,繼承,多態(tài)。3(無用)4請(qǐng)解釋類屬性、實(shí)例屬性及其區(qū)別。答:實(shí)例屬性,由一個(gè)個(gè)的實(shí)例用來存儲(chǔ)所有實(shí)例都需要的屬性信息,不同實(shí)例的屬性值可能會(huì)不同。5請(qǐng)解釋類方法、實(shí)例屬性及其區(qū)別。答:實(shí)例方法表示特定對(duì)象的行為,在聲明時(shí)前面不加static修飾符,在使用時(shí)需要發(fā)送給一個(gè)類實(shí)例。類方法也稱為靜態(tài)方法,在方法聲明時(shí)前面需加static修飾符,類方法表示具體實(shí)例中類對(duì)象的共有行為。區(qū)別:實(shí)例方法可以直接訪問實(shí)例變量,調(diào)用實(shí)例方法,實(shí)例方法可以直接訪問類變量,調(diào)用類方法;類方法可以直接調(diào)用類變量和類方法,類方法不能直接調(diào)用實(shí)例變量和實(shí)例方法;6

3、類的訪問控制符有哪幾種?具體含義及其區(qū)別。答:類的訪問控制符只有public(公共類)及無修飾符(默認(rèn)類)兩種。區(qū)別:當(dāng)使用public修飾符時(shí)表示所有其他的類都可以使用此類;當(dāng)沒有修飾符時(shí),則只有與此類處于同一包中的其他類可以使用類。7類成員的訪問控制符有哪幾種?他們對(duì)類成員分別有哪些訪問限制的作用?答:類成員的訪問控制符有public,private,protecte及無修飾符.public(公有的):用public修飾的成分表示公有的,也就是它可以被其他任何對(duì)象訪問(前提是對(duì)累成員所在的類訪問有訪問權(quán)限).Private(保護(hù)的):類中限定為private的成員只能被這個(gè)類本身訪問,在類

4、外不可見。proteced(保護(hù)的)用該關(guān)鍵字修飾的成分是受保護(hù)的,只可以被同一類及其子類的實(shí)例對(duì)象訪問。無修飾符(默認(rèn)的):public,private,protected這個(gè)三個(gè)限定符不是必須寫的。如果不寫,貝U表明是“friendly”相應(yīng)的成分可以被所在保重的各類訪問。8簡(jiǎn)述構(gòu)造方法的特點(diǎn)?答:構(gòu)造方法主要有以下特點(diǎn):(1)構(gòu)造方法的方法名與類名相同;(2)構(gòu)造方法沒有返回類型(修飾符void也不能有);(3)構(gòu)造方法通常被聲明為公有的(public);(4)構(gòu)造方法可以有任意多個(gè)參數(shù);(5)構(gòu)造方法的主要作用是完成對(duì)象的初始化工作;(6)構(gòu)造方法不能在程序中顯式的調(diào)用;(7)在生成一

5、個(gè)對(duì)象時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用該類的構(gòu)造方法為新生成的對(duì)象初始化。9如果在類聲明中聲明了構(gòu)造方法,系統(tǒng)是否還提供默認(rèn)的構(gòu)造方法?答:用戶在進(jìn)行類聲明時(shí),如果沒有聲明任何構(gòu)造方法,系統(tǒng)會(huì)賦給此類一個(gè)默認(rèn)(無參)的構(gòu)造方法。但是,只要用戶聲明了構(gòu)造方法,即使沒有聲明無參的構(gòu)造方法,系統(tǒng)也不會(huì)再賦默認(rèn)的構(gòu)造方法。10:聲明Patient類表示在門診室中的病人。此類對(duì)象應(yīng)包括nameCastring)sex(achar)、age(aninteger)、weight(afloat。、allergies(aboolean).聲明存取及修改方法。在一個(gè)單獨(dú)的累中,聲明測(cè)試方法,并生成兩個(gè)patient的例子:At

6、ientapril=newPatient();April.setname(“zhangli”)April.setSex(f);April.setage(330;April.setweigeht(154.72);April.setalolergies(true);System.out.println(“那么:”+april.getname();System.out.println(“sex:”+april.getsex();System.out.println(“age:”+april.getage();System.outprintln(“weught:”+april.getweight();

7、System.out.println(“allergies:”+april.getallergies();聲明并測(cè)試toString()方法顯示一個(gè)病人的aga、sex、name及allergies屬性。答:publicclassPatientprivateStringname;privatecharsex;privateintage;privatefloatweight;privatebooleanallergies;publicvoidsetname(Stringa)name=a;publicvoidsetsex(charb)sex=b;publicvoidsetage(intc)age=

8、c;publicvoidsetweight(floatd)weight=d;publicvoidsetallergies(booleane)allergies=e;publicStringgetname()returnname;publicchargetsex()returnsex;publicintgetage()returnage;publicfloatgetweight()returnweight;publicbooleangetallergies()returnallergies;publicclassTextpublicstaticvoidmain(Stringargs)+april

9、.getname();+april.getsex();+april.getname();+april.getsex();+april.getage();+april.getweight();+april.getallergies();MiciosoEtWindovjsXPI.皈豐左ZU:!?!反市又片斤985200XMicsOoFtCop=C=sDocumentsmndSet;1;ns(sjAGClJO.W0LI)=SjavajavacFatientjavaD二8xjawa.Jai=iacText=Jawa.D-TextNamisS立1*1曰.mrlLid_sex=fm曰曰二33weisgrl

10、-it=54-721lei:*!grsstruesU=Saava11:聲明并測(cè)試一個(gè)復(fù)數(shù)類,其方法包括toString()及復(fù)數(shù)的加、減、乘運(yùn)算。答:publicclassComplexprivatefloata;privatefloatb;publicStringtoString()if(a!=O)return(a+i+b);elsereturn(+b);publicComplex(floatafloatb)this.a=a;this.b=b;publicvoidAdd(Complexp)this.a+=p.a;this.b+=p.b;publicvoidDecrease(Complexp)

11、this.a-=p.a;this.b-=p.b;publicvoidMultiply(Complexp)this.a=this.a*p.a;this.b=this.b*p.b;publicclassComplexTexterpublicstaticvoidmain(Stringargs)Complexa=newComplex(2,4);Complexb=newComplex(5,8);a.Add(b);System.out.println(a.toString()+n);a.Decrease(b);System.out.println(a.toString()+n);a.Multiply(b)

12、;System.out.println(a.toString()+n);D:Ja.vajavacCompLcx-Java.D:jauajauacConplexTexterJav-aJavaConplexTextei*7_0i+12.05.01+8.010.0i+32.0D:12:什么是UML?它由哪幾部分組成?答:UML是圖形化()即可視化的建模語(yǔ)言,成為面向?qū)ο蠼5臉?biāo)準(zhǔn)語(yǔ)言。它由四部分組成:(1)視圖(2)圖(3)模型元素(4)通用機(jī)制常用的類與類之間的關(guān)系有哪幾種。答:有關(guān)聯(lián)、依賴、流、泛化、實(shí)現(xiàn)、使用。考慮學(xué)院、系及教員應(yīng)該具有哪些屬性,并畫出它們之間關(guān)系的類圖。第三章課后習(xí)題答案1設(shè)

13、N為自然數(shù):n!=1*2*3*.*n稱為n的階乘,并且規(guī)定0!=1試編程計(jì)算2!,4!,6!he10!并將結(jié)果輸出到屏幕上。答:publicclassMuipublicstaticvoidmain(Stringargs)JLiElf-360iEIO.BJLiElf-360iEIO.BJLiElf-360iEIO.BJLiElf-360iEIO.Binti,n;floats;for(n=0;n=10;n二n+2)if(n=0)System.out.println(0!=1n);elses=1;for(i=1;i=n;i+)s=s*i;System.out.println(n+!二+s+n);”口

14、W口F左出工口日口wwMP5.1.2630版杈所有1TS5-HB01MieroaoFhCo口i7D口dspah,CrilJO.VCIpsjov.GMuipsXjLva.java.Flu.1Hf-1SIV*3.B4豐-呂4.0-72B.B2.編寫程序,接收用戶從鍵鍵盤上輸入的三個(gè)整數(shù)x,y,z.從中選出最大和最小者,并編程實(shí)現(xiàn)。答:publicclassMathpublicstaticvoidmain(Stringargs)intIntArg=newintargs.length;for(inti=0;iIntArg1?IntArg0:IntArg1;max=maxIntArg2?max:IntA

15、rg2;min=IntArg0IntArg1?IntArg0:IntArg1;min=minjavacMath.Javap:jauajavaMath451678max=78min=16p:jaua3求出100一枚的宿舍,并將這些數(shù)在屏幕上5個(gè)乙杭地顯示出來。答:publicclassSupublicstaticvoidmain(Stringargs)intn,i,k=O,y;for(n=2;n=100;n+)y=1;for(i=2;ijavacSujavaD:jauajauaSup35711131719232931374143475359167717983899?java_4使用java.Ia

16、ng.Math類,生成100個(gè)0-99之間的隨機(jī)整數(shù),找出他們之中的最大值和最小值,并統(tǒng)計(jì)大于50的整數(shù)個(gè)數(shù)。publicclassRandompublicstaticvoidmain(Stringargs)intMinNum,MaxNum,n=O;intarray二newint1OO;array0=(int)(Math.random()*100);MinNum=array0;MaxNum=array0;System.out.println(“數(shù)列為:);System.out.print(arrayO+);for(inti=0;i50)n+;if(arrayi=MaxNum)MaxNum=ar

17、rayi;if(arrayi=MinNum)MinNum二arrayi;System.out.print(arrayi+);System.out.println();System.out.println(MinNum=+MinNum);System.out.println(MaxNum=+MaxNum);System.out.println(大于50的整數(shù)個(gè)數(shù)有:+n);5接收用戶從鍵盤上輸入的兩個(gè)整數(shù),求兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù),并輸出。publicclassTest2publicstaticvoidmain(Stringargs)intI=newintargs.length;for(

18、inti=O;iargs.length;i+)Ii=lnteger.parselnt(argsi);intm,n,temp,t;if(l0jauacTestZ.javab:、我的文檔桌面aua.TestZ6S:我的文檔桌面6.從鍵盤上輸入一件物品的價(jià)格(范圍在0.105.00元.),假設(shè)用戶支付了一張5元紙幣,請(qǐng)列出一種找零的方案,使得紙幣及硬幣的個(gè)數(shù)最少。如3.68元,應(yīng)為兩元一張一元一張、五角一個(gè)、一角一個(gè)、五分一個(gè)、二分一個(gè)、一分一個(gè)。/Price類importjavaio.*;publicclassPricepublicstaticvoidmain(Stringargs)Systemo

19、utprintln(enteranumber(001500):);floata=KeyboardgetFloat();intc=(int)(a*100);intb=500-c;Systemoutprintln(找零如下:);if(b/200!=0)System.outprintln(b/200+張2元);b-=(b/200)*200;if(b/100!=0)System.out.println(b/100+張1元);b-=(b/100)*100;if(b/50!=0)System.outprintln(b/50+張5角);b-=(b/50)*50;if(b/20!=0)System.outpr

20、intln(b/20+張2角);b-=(b/20)*20;if(b/10!=0)System.outprintln(b/10+張1角);b-=(b/10)*10;if(b/5!=0)System.out.println(b/5+個(gè)5分);b-=(b/5)*5;if(b/2!=0)System.out.println(b/2+個(gè)2分);b-=(b/2)*2;if(b!=0)System.outprintln(b+個(gè)1分);/Keyboard類importjava.io.*;publicclassKeyboardstaticBufferedReaderinputStream=newBuffered

21、Reader(newInputStreamReader(System.in);publicstaticintgetInteger()tryreturn(Integer.valueOf(inputStream.readLine().trim().intValue();catch(Exceptione)e.printStackTrace();return0;publicstaticStringgetString()tryreturn(inputStream.readLine();catch(IOExceptione)return0;publicstaticfloatgetFloat()String

22、s=;tryBufferedReaderin=newBufferedReader(newInputStreamReader(System.in);s=in.readLine();return(FloatparseFloat(s);catch(IOExceptione)Systemoutprintln(輸入非法!);return(0.0f);運(yùn)行結(jié)果:Froblems*笹iawEdocp.ITecbi目tionf曰-PriceJavaApplicationO?PrcgrenterazmnfcET(0.01-5.00!I3.60棧零如下:丄肌元討2分7什么是異常?解釋拋出、捕獲的含義。答:異常又稱

23、為例外,是特殊的運(yùn)行錯(cuò)誤對(duì)象,在程序中可以強(qiáng)制編譯器來處理程序運(yùn)行中的發(fā)生的并非由程序本身所造成的錯(cuò)誤;拋出異常:把生成異常對(duì)象并提交的過程稱為拋出異常;拋出異常是java中一個(gè)程序處理動(dòng)作,檢查異常時(shí)要么在方法中聲明一個(gè)異常拋出,用try-catch語(yǔ)句捕獲異常,并進(jìn)行處理。8.簡(jiǎn)述Java的異常處理機(jī)制。答:java中聲明了很多異常類,每個(gè)異常類都代表了一種運(yùn)行錯(cuò)誤,類中包含了該運(yùn)行錯(cuò)誤的信息和處理錯(cuò)誤的方法等內(nèi)容。每當(dāng)java程序運(yùn)行過程中發(fā)生一個(gè)可識(shí)別的運(yùn)行錯(cuò)誤時(shí),即該錯(cuò)誤有一個(gè)異常類與之相對(duì)應(yīng)時(shí),系統(tǒng)都會(huì)產(chǎn)生一個(gè)相應(yīng)的該異常類的對(duì)象,即產(chǎn)生一個(gè)異常。一旦一個(gè)異常對(duì)象產(chǎn)生了,系統(tǒng)中就一

24、定有相應(yīng)的機(jī)制來處理它,確保不會(huì)產(chǎn)生死機(jī)、死循環(huán)或其他對(duì)操作系統(tǒng)的損害,從而保證了整個(gè)程序運(yùn)行的安全性。9.系統(tǒng)定義的異常與用戶自定義的異常有何不同?如何使用這兩類異常?答:系統(tǒng)定義的特定情況出現(xiàn)的問題,而此時(shí)用來對(duì)可能遇到的問題進(jìn)行處理。用戶定義的是自己覺得可能會(huì)出現(xiàn)問題時(shí),需要處理的。這樣避免程序中斷或是出現(xiàn)未知錯(cuò)誤。系統(tǒng)異常有兩種一種是運(yùn)行時(shí)異常,一種是普通異常,普通異常要求用戶捕獲或者拋出的,不補(bǔ)貨或者拋出就會(huì)編譯不通過。運(yùn)行時(shí)異常編譯可以通過,但是運(yùn)行時(shí)才顯露出來。10.用戶如何自定義異常?編程實(shí)現(xiàn)一個(gè)用戶自定義異常。定義mytestimportjava.io.*;publiccla

25、ssmytestprivatestaticintquotient(intnumber,intdenominator)throwsDivideByZeroExceptionif(denominator=0)thrownewDivideByZeroException();return(number/denominator);publicstaticvoidmain(Stringargs)intnumber1=0,number2=0,result=0;trySystem.out.println(輸入第一個(gè)數(shù)字:“);number1=Integer.valueOf(Keyboard.getString

26、().intValue();System.out.println(輸入第二個(gè)數(shù)字:“);number2=Integer.valueOf(Keyboard.getString().intValue();result=quotient(number1,number2);catch(NumberFormatExceptione)System.out.println(e.toString();System.exit(-1);System.out.println(number1+/+number2+=+result);System.out.println(number1+/+number2+=+resu

27、lt);System.out.println(number1+/+number2+=+result);System.out.println(number1+/+number2+=+result);定義DivideByZeroExceptionpublicclassDivideByZeroExceptionextendsArithmeticExceptionpublicDivideByZeroException()super(除數(shù)不能為0!);定義Keyboardimportjava.io.*;publicclassKeyboardstaticBufferedReaderinputStream=

28、newBufferedReader(newInputStreamReader(System.in);publicstaticintgetInteger()tryreturn(Integer.valueOf(inputStream.readLine().trim().intValue();catch(Exceptione)e.printStackTrace();return0;publicstaticStringgetString()tryreturn(inputStream.readLineO);catch(IOExceptione)return0;Xjauajauanytest輸人第一個(gè)數(shù)字

29、:輸人笫二個(gè)數(shù)字;0Exceptioninthrea.dmain*DiuideByEeroException=除數(shù)不育豈為回號(hào)atnytet-(juotientCnyteEt.jaua:6atnytest-mainiaua第四章課后習(xí)題答案1子類將繼承父類所有的屬性和方法嗎?為什么?答:不,子類不能直接訪問從父類中繼承的私有屬性及方法,但可以對(duì)公有及保護(hù)方法進(jìn)行訪問。2.方法的覆蓋與方法的重載有何不同?答:覆蓋是運(yùn)用在子類中實(shí)現(xiàn)與父類相同的功能,但采用不同的算法或公式;在名字相同的方法中,要做比父類更多的事情;在子類中需要取消從父類繼承的方法。3聲明兩個(gè)帶有無參構(gòu)造方法的兩個(gè)類A和B,聲明A的

30、子類C,并且聲明B為C的一個(gè)成員,不聲明C的構(gòu)造方法。編寫測(cè)試代碼,生成類C的實(shí)例對(duì)象,并觀察結(jié)果。/A類publicclassApublicA()System.out.println(輸出A類“);/B類publicclassBpublicB()System.out.println(輸出B類);/C類publicclassCextendsABb=newB();/測(cè)試類publicclasstest4_3publicstaticvoidmain(Stringargs)Cc=newC();運(yùn)行結(jié)果:,ProbIemsavadocteirminatedte-&t4_3Java輸出A類輸出萬類4聲明

31、一個(gè)基類A,它只有一種非默認(rèn)構(gòu)造方法;聲明A的子類B,B具有默認(rèn)方法及非默認(rèn)方法,并在B的構(gòu)造方法中調(diào)用基類A的構(gòu)造方法。/A類publicclassApublicA(Stringlin)System.ou七.println(A類的非默認(rèn)構(gòu)造方法+lin);/B類publicclassBextendsApublicB()super(Fuckyourteacher);System.ou七.println(B默認(rèn)類構(gòu)造方法);publicB(Stringlin)super(lin);System.ou七.println(B類非構(gòu)造方法);測(cè)試類publicclasstest4_4publicsta

32、ticvoidmain(Stringargs)newB();System.ou七.println();newB(Fuckmyteacher);運(yùn)行結(jié)果:Cor.ProtlemsTJavadoc凰DeclarationCortest4_4JavaApplicationD:Progrsi負(fù)類的非默認(rèn)構(gòu)鑿方法FmJeyorteacherE默認(rèn)類枸苣方法血類的非藍(lán)認(rèn)構(gòu)苣方法血類的非藍(lán)認(rèn)構(gòu)苣方法E類非構(gòu)直方法Fack:m#teacrier5聲明一個(gè)類,它具有一種方法,此方法被重載三次,派生一個(gè)新類,并增加一種新的重載方法,編寫測(cè)試類驗(yàn)證四種方法對(duì)于派生類驗(yàn)證四種方法對(duì)于派生類都有效。/A類publicc

33、lassApublicvoidshowTime()System.out.println(空重載“);publicvoidshowTime(intl)System.out.println(整形參數(shù)重載);publicvoidshowTime(charl)System.out.println(字符參數(shù)重載);B類publicclassBextendsApublicvoidshowTime(Stringl)System.out.println(字符串參數(shù)重載);/測(cè)試類publicclasstest4_5publicstaticvoidmain(Stringargs)Bb=newB();b.show

34、Time();b.showTime(5);b.showTime(f);b.showTime(林楚金);,ProLlernsavad&c鷹terminatedteet4_5JavaAf空重載整砒卷數(shù)重載宇紆參埶重載字符串蜃數(shù)重載6聲明一個(gè)具有final方法的類,聲明一個(gè)派生類,并試圖對(duì)這個(gè)方法進(jìn)行重寫,會(huì)有什么結(jié)果。/A類publicclassApublicfinalvoidshowTime()System.out.println(類A中方法“);/B類publicclassBextendsApublicvoidshowTime()System.out.println(類B中方法“);測(cè)試類pu

35、blicclasstest4_6publicstaticvoidmain(Stringargs)Bb=newB();b.showTime();運(yùn)行結(jié)果:_FrablemsJavadoc耳Dedaon|日Cnnsole割-:te3TTnirfltedttst4_6JavaAppliizrticnDPnograml-ilcs,,|MyEc(pii亡咼沖問旳莎”心亡(Apr12,2D11L19WAMiKcepcicciintbread血比*java.Isrr.Veiifrror:classBaverridEfinalnEtltodC.Zatatatatatmtatat5tae.uLazigaClas

36、Lsad.er.dEfizsCIassl渕衣譏宅Ujeihod?己起LangClassLadeidfifUieClassIDnlcicwSource)avasecuity.SecrjzeClaBsLMder.defuieClassIDnlonraSoltk)atbunet.ORlCLassLcaderdefineClasE(IMcicwnSource|芒起.netriRlCLB-Sslcader.accesaSLQD|UiUciownsource|和足atatatatatmtatat5ta.ffssJxity.ADijeaaCoDcrDLler.doPrivileged讓la二1擔(dān)片匕訂丈笳足

37、.netriFELClasslaader.njuicia331血mownSDirce)aTELamj.ClaLMderloadHaaaIUnkRcmaourceisuneLs百Launcher$ppClaE?LaaderLDila3sIUrIhimziSouide)dfriLang.CLassLMder.iDa-illasa|OnkRsmaource)atjaTri.Lamj.ClasgLMder.iDadlaaaZDtEniaJ(QDinzmSaircej(說白了就是B中showTime()的無法覆蓋A中showTime(),被覆蓋為final,不能覆蓋。)7聲明一個(gè)final類,并試圖聲明

38、其派生類,會(huì)有什么結(jié)果。/A類publicfinalclassA/B類publicclassBextendsA/測(cè)試類publicclasstest4_7publicstaticvoidmain(Stringargs)Bb=newB();publicclassStudentpublicclassStudentpublicclassStudentpublicclassStudent運(yùn)行結(jié)果:BkProblems鼐gn/aiclo圖Dedsamaticn曰Console3test4_7JavaApplicaticnD:ProgramFilesMyEclipse6.0jrebinjavaw.exe(

39、Apr12,20111:24:11AM)Exceptioninthread町ndii11jcza丄HLiigEi:37aj7:Ubleix:Ttiet-TpeBcannotsutclassthefinalclassA且匸E(B.iava:2)attest47mainttesc7iav且:4I(說白了就是無法從A中進(jìn)行繼承)8什么是抽象類?抽象類中是否一定要包括抽象方法?答:抽象類是一個(gè)不完全的類,不能使用new方法進(jìn)行實(shí)例化。抽象類可以包含抽象方法,也可以不包含抽象方法,但有抽象方法的必須是抽象類。9.this和super分別有哪些特殊含義?都有哪些種用法?答:this表示當(dāng)前類;super表

40、示調(diào)用父類。在定義類的時(shí)候用到,this是當(dāng)前對(duì)象的引用,super是當(dāng)前對(duì)象的父類對(duì)象的引用,一般的都是把super用在構(gòu)造函數(shù)中。10完成下面父類及子類的聲明:聲明Student類屬性包括學(xué)號(hào)、姓名、英語(yǔ)成績(jī)、數(shù)學(xué)成績(jī)、計(jì)算機(jī)成績(jī)和總成績(jī)。方法包括構(gòu)造方法、get方法、set方法、toString方法、equals方法、compare方法(比較兩個(gè)學(xué)生的總成績(jī),結(jié)果分為大于、小于、等于),sum方法(計(jì)算總成績(jī))和testScore方法(計(jì)算評(píng)測(cè)成績(jī))。注:評(píng)測(cè)成績(jī)可以取三門課成績(jī)的平均分,另外任何一門課的成績(jī)的改變都需要對(duì)總成績(jī)進(jìn)行重新計(jì)算,因此,在每一個(gè)set方法中應(yīng)調(diào)用sum方法計(jì)算

41、總成績(jī)。Stringid;Stringname;floatscoreOfenglish;floatscoreOfmath;floatscoreOfcomputer;floatscoreOfsum;/構(gòu)造方法publicStudent()ascoreOfmath,floatascoreOfmath,floatpublicStudent(Stringaid,Stringaname,floatascoreOfenglish,floatascoreOfcomputer)this.id=aid;=aname;this.scoreOfenglish=ascoreOfenglish;this.scoreOf

42、math=ascoreOfmath;this.scoreOfcomputer=ascoreOfcomputer;/this.scoreOfsum=ascoreOfenglish+ascoreOfmath+ascoreOfcomputer;this.scoreOfsum=sum();/sum方法publicfloatsum()return(this.scoreOfenglish+this.scoreOfmath+this.scoreOfcomputer);/testScore測(cè)評(píng)成績(jī)/平均分publicfloattestScore()return(this.scoreOfsum/3);6個(gè)get

43、方法publicStringgetid()return(id);publicStringgetname()return(name);publicfloatgetscoreOfenglish()return(scoreOfenglish);publicfloatgetscoreOfmath()return(scoreOfmath);publicfloatgetscoreOfcomputer()return(scoreOfcomputer);publicfloatgetscoreOfsum()return(scoreOfsum);5個(gè)set方法publicvoidsetid(Stringnewid

44、)publicvoidcompare(Studentx)publicvoidcompare(Studentx)this.id=newid;publicvoidsetname(Stringnewname)=newname;publicvoidsetscoreOfenglish(floatnewscoreOfenglish)this.scoreOfenglish=newscoreOfenglish;this.scoreOfsum=sum();publicvoidsetscoreOfmath(floatnewscoreOfmath)this.scoreOfmath=newscoreOfmath;th

45、is.scoreOfsum=sum();publicvoidsetscoreOfcomputer(floatnewscoreOfcomputer)this.scoreOfcomputer=newscoreOfcomputer;this.scoreOfsum=sum();/toString方法publicStringtoString()return(“學(xué)號(hào):+this.id+姓名:+name+n英語(yǔ):+this.scoreOfenglish+n數(shù)學(xué):+this.scoreOfmath+n計(jì)算機(jī):+this.scoreOfcomputer+n總分:+this.scoreOfsum);/compar

46、e方法/比較2學(xué)生總分if(this.getscoreOfsum()x.getscoreOfsum()System.out.println(this.getname()+總分大于+x.getname();if(this.getscoreOfsum()x.getscoreOfsum()System.out.println(this.getname()+總分小于+x.getname();elseSystem.out.println(this.getname()+總分等于+x.getname();/equals方法/比較2學(xué)生學(xué)號(hào)是否相等(還沒完善)/*publicbooleanequals(Obj

47、ectx)if(this.getClass()!=x.getClass()returnfalse;Studentb=(Student)x;if(this.id=b.getid()returntrue;*/(2)聲明StudentXW(學(xué)習(xí)委員)類為Student類的子類。在StudentXW類中增加責(zé)任屬性,并重寫testScore方法(評(píng)測(cè)成績(jī)二三門課平均分+3)publicclassStudentXWextendsStudentStringresponsibility;/構(gòu)造方法publicStudentXW()super();/responsibility=;publicvoidcomp

48、are(Studentx)publicvoidcompare(Studentx)publicStudentXW(Stringaid,Stringaname,floatascoreOfenglish,floatascoreOfmath,floatascoreOfcomputer,Stringaresponsibility)super(aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer);responsibility=aresponsibility;/testScore測(cè)評(píng)成績(jī)/平均分publicfloattestScore()retur

49、n(this.scoreOfsum/3+3);/toString方法publicStringtoString()return(“學(xué)號(hào):+this.id+姓名:+name+n英語(yǔ):+this.scoreOfenglish+n數(shù)學(xué):+this.scoreOfmath+n計(jì)算機(jī):+this.scoreOfcomputer+n總分:+this.scoreOfsum+n職位:+this.responsibility);(3)聲明StudentBZ類為Student類的子類在StudentBZ類中增加責(zé)任屬性,并重寫testScore方法(評(píng)測(cè)成績(jī)=三門課平均分+5)publicclassStudentB

50、ZextendsStudentStringresponsibility;/構(gòu)造方法publicStudentBZ()super();/responsibility=;publicStudentBZ(Stringaid,Stringaname,floatascoreOfenglish,floatascoreOfmath,floatascoreOfcomputer,Stringaresponsibility)super(aid,aname,ascoreOfenglish,ascoreOfmath,ascoreOfcomputer);responsibility=aresponsibility;/t

51、estScore測(cè)評(píng)成績(jī)/平均分publicfloattestScore()return(this.scoreOfsum/3+5);/toString方法publicStringtoString()return(“學(xué)號(hào):+this.id+姓名:+name+n英語(yǔ):+this.scoreOfenglish+n數(shù)學(xué):+this.scoreOfmath+n計(jì)算機(jī):+this.scoreOfcomputer+n總分:+this.scoreOfsum+n職位:+this.responsibility);聲明測(cè)試類,生成若干個(gè)Student類、StudentXW類及StudentBZ類對(duì)象,并分別計(jì)算它們

52、的評(píng)測(cè)成績(jī)(建議采用:寫一個(gè)測(cè)試函數(shù),該函數(shù)以父類student數(shù)組作為參數(shù))。importjava.text.*;publicclasstest4_10publicstaticvoidmain(Stringargs)Studentsu=newStudent(001,蘇軾,56.00f,87.00f,95.00f);Studentdu二newStudent(002,杜甫,86.00f,75.00f,80.00f);Studentbai二newStudent(003,白居易,42.00f,77.00f,65.00f);Studentliu二newStudent(004,柳宗元,67.00f,67

53、.00f,67.00f);StudentXWou二newStudentXW(005,歐陽(yáng)修,89.00f,98.00f,90.00f,數(shù)學(xué)代表);StudentXWwang二newStudentXW(006,王安石,98.00f,87.00f,36.00f,英語(yǔ)代表“);StudentBZli=newStudentBZ(007,李白,89.00f,87.00f,87.00f,班長(zhǎng)“);System.out.print(li);System.out.println(n評(píng)測(cè)成績(jī):+newDecimalFormat(O.OO).format(li.testScore();System.out.pri

54、ntln();System.out.print(wang);System.out.println(n評(píng)測(cè)成績(jī):+newDecimalFormat(0.00).format(wang.testScore();System.out.println();System.out.print(ou);System.out.println(n評(píng)測(cè)成績(jī):+newDecimalFormat(0.00).format(ou.testScore();System.out.println();System.out.print(su);System.out.println(n評(píng)測(cè)成績(jī):+newDecimalFormat

55、(0.00).format(su.testScore();System.out.println();System.out.print(du);System.out.println(n評(píng)測(cè)成績(jī):+newDecimalFormat(0.00).format(du.testScore();System.out.println();System.out.print(bai);System.out.println(n評(píng)測(cè)成績(jī):+newDecimalFormat(0.00).format(bai.testScore();System.out.println();System.out.print(liu);

56、System.out.println(Hn評(píng)測(cè)成績(jī):+newDecimalFormat(H0.00H).format(liu.testScore();運(yùn)行test4_10的結(jié)果如下:ProblemsProblemsJavadoc風(fēng)Decpublicvoidcompare(Studentx)publicvoidcompare(Studentx)test4_110JavaAppliL;白00李:L;白00李:335:歐陽(yáng)幅:汕.0:匸0機(jī);30.0:277.0:數(shù)學(xué)代夷:92.7號(hào)名語(yǔ)學(xué)算分位學(xué)姓英數(shù)計(jì)總職publicvoidcompare(Studentx)publicvoidcompare(S

57、tudentx)評(píng)無成績(jī):95.3311軾D:苗5:2鏡機(jī):咸號(hào)容語(yǔ)學(xué)M分測(cè)學(xué)姓英埶計(jì)總評(píng)publicvoidcompare(Studentx)publicvoidcompare(Studentx)publicvoidcompare(Studentx)publicvoidcompare(Studentx)機(jī):成號(hào)客語(yǔ)學(xué)算分測(cè)學(xué)姓英數(shù)計(jì)總評(píng)機(jī);成邑名語(yǔ)學(xué)算分剃學(xué)姓英數(shù)計(jì)總評(píng)機(jī)機(jī):成號(hào)客語(yǔ)學(xué)算分測(cè)學(xué)姓英數(shù)計(jì)總評(píng)機(jī);成邑名語(yǔ)學(xué)算分剃學(xué)姓英數(shù)計(jì)總評(píng)機(jī)成號(hào)名語(yǔ)學(xué)算片則學(xué)姓英數(shù)計(jì)總評(píng)002杜甫56.075.0:SO.0E豈1050.33003白居易42.0中0;町5口13.0績(jī):61.33004柳示TH6

58、7067.0:7.0201.0常:67.0-3(很好玩吧,李白,我讓你掛科。11包有什么作用?如何創(chuàng)建包和引用包中的類?答:包是一種松散的類的組合,一般不要求處于同一包中的類型有明確的相互關(guān)系,但由于同一包中的類在默認(rèn)情況下可以相互訪問,所以為了方便編程和管理,通常把需要在一起工作的類放在一個(gè)包里。利用包來管理類,可實(shí)現(xiàn)類的共享與復(fù)用。在操作系統(tǒng)中,目錄用來組織文件,設(shè)置權(quán)限。只要在要用到包中類的時(shí)候,在該引用類的第一行加上:package(包的全路徑)即可。第五章課后習(xí)題答案1什么是接口?接口起什么作用?接口與抽象類有何區(qū)別?答:Java中的接口是一系列方法的聲明,是一些方法特征的集合,一個(gè)

59、接口只有方法的特征沒有方法的實(shí)現(xiàn),因此這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為(功能)。作用:接口是面向?qū)ο蟮囊粋€(gè)重要機(jī)制,使用接口可以實(shí)現(xiàn)多態(tài)繼承;接口中的所有方法都是抽象的,這些抽象方法由實(shí)現(xiàn)這一接口的不同類型來具體;接口還可以用來實(shí)現(xiàn)不同類之間的常量共享。與抽象類不同的是:接口允許在看起來不相干的類之間定義共同行為。2試編程證明接口中的屬性都隱含為static及final,所有的方法都為public。/定義接口Shape2DinterfaceShape2DdoublePi=3.14;doublearea();/Circle類繼承接口Shape2Dpublicc

60、lassCircleimplementsShape2Ddoubleradius;publicCircle(doubler)radius=r;publicdoublearea()returnPi*radius*radius;/A類(測(cè)試接口中隱含final的area()方法)publicclassAextendsShape2Dpublicdoublearea();/test5_2publicclasstest5_2publicstaticvoidmain(Stringargs)Circlec=newCircle(10);System.out.println(Pi=3.14圓的面積:+c.area

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論