《Java語言知識(shí)學(xué)習(xí)程序設(shè)計(jì)》答案解析_第1頁
《Java語言知識(shí)學(xué)習(xí)程序設(shè)計(jì)》答案解析_第2頁
《Java語言知識(shí)學(xué)習(xí)程序設(shè)計(jì)》答案解析_第3頁
《Java語言知識(shí)學(xué)習(xí)程序設(shè)計(jì)》答案解析_第4頁
《Java語言知識(shí)學(xué)習(xí)程序設(shè)計(jì)》答案解析_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、System. out .println("C1f );中國石油大學(xué)(北京)遠(yuǎn)程教育學(xué)院期末考試Java語言程序設(shè)計(jì)學(xué)習(xí)中心:姓名:學(xué)號(hào):關(guān)于課程考試違規(guī)作弊的說明1、提交文件中涉嫌抄襲內(nèi)容(包括抄襲網(wǎng)上、書籍、報(bào)刊雜志及其他已有論文),帶有明顯外校標(biāo)記,不符合學(xué)院要求或?qū)W生本人情況,或存在查明出處的內(nèi)容或 其他可疑字樣者,判為抄襲,成績(jī)?yōu)椤?0”。2、兩人或兩人以上答題內(nèi)容或用語有 50%以上相同者判為雷同,成績(jī)?yōu)椤?0”。3、所提交試卷或材料沒有對(duì)老師題目進(jìn)行作答或提交內(nèi)容與該課程要求完全不一、題型簡(jiǎn)答題,4題,每題15分,共60分;編程題,2題,每題20分,共40分二、題目共兩

2、套題,學(xué)號(hào)末尾數(shù)單號(hào)學(xué)生做第一套,學(xué)號(hào)末尾數(shù)雙號(hào)學(xué)生做第二套題第一套題一、簡(jiǎn)答題1什么是多態(tài)性?方法的重載和覆蓋有何區(qū)別?閱讀下列代碼,指出其中存在的重載和覆蓋,寫出輸出結(jié)果是什么?解釋為什么這樣輸出? (15分)class C1Public void f() class C2 extends C1public void f() System. out .println("C2f );class C3 p ublic void g(C1 one) System. out .println("g(C1)");on e.f();public void g(C2 two

3、) System. out .println("g(C2)");two.f();publicclass Main1p ublic static void main( Stri ng args) C1 one = new C2();C3 three = new C3();three.g( on e);答:1.多態(tài)性是指允許不同類的對(duì)象對(duì)統(tǒng)一消息做出響應(yīng)。多態(tài)包括參數(shù)化多態(tài) 和包含多態(tài)。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享等優(yōu)勢(shì),很好地 解決了應(yīng)用程序函數(shù)同名問題。重載是指同一個(gè)類中有多個(gè)同名的方法, 但這些方法有著不同的參數(shù),因此在編 譯時(shí)就可以確定到底調(diào)用哪個(gè)方法,

4、 它是一種編譯時(shí)多態(tài)。覆蓋是指子類可以覆蓋父類的方法,同樣的方法會(huì)在子類和父類中有著不同的變現(xiàn)形式。即重載是一 個(gè)類的多態(tài)性表現(xiàn),而覆蓋是子類和父類的一種多態(tài)性表現(xiàn)。class C1publicvoid f() System. out .println( "C1.f");class C2 extends C1publicvoid f() System. out .println( "C2f );/覆蓋,子類 C2重寫了父類 C1中的f()方法 class C3 Publicvoidg(C1 one ) System. out .println( "g(C

5、1)");one .f();publicvoid g(C2 two ) /重載,根據(jù)傳入?yún)?shù)不同,C3實(shí)現(xiàn)不同的g()方法System. out .println( "g(C2)");two .f();p ublicclassMain1publicstaticvoidmain(Stringargs ) C1 one = new C2();C3 three = new C3();three .g( one );輸出:g(C1)C2.f原因:由于子類C2的f()方法與父類C1的方法同名,因此C2的方法會(huì)覆蓋C1 的方法。在執(zhí)行C1 one = new C2()語句時(shí),

6、會(huì)調(diào)用C1類的構(gòu)造函數(shù),因此 three.g(one)語句會(huì)調(diào)用傳入?yún)?shù)為C1的g()方法,輸出g(C1)。而由于實(shí)際創(chuàng)建的是C2類的方法,后面的方法調(diào)用都會(huì)調(diào)用子類 C2的方法,因此輸出C2.f。2、請(qǐng)用自己的語言介紹 throw/throws 有什么聯(lián)系和區(qū)別?在程序中應(yīng)如何使用?另外談?wù)刦inal、fin ally的區(qū)別和作用,必須舉例說明用法。(15分)答:若某個(gè)方法可能會(huì)發(fā)生異常,但不想在當(dāng)前方法中處理這個(gè)異常,則可以使 用throws、throw關(guān)鍵字在方法中拋出異常。throw關(guān)鍵字通常用于方法體中,并且拋出一個(gè)異常對(duì)象,程序在執(zhí)行到throw 語句時(shí)立即終止,它后面的語句 都不

7、執(zhí)行。throws關(guān)鍵字通常被應(yīng)用在聲明方法時(shí),用來指定方法可能拋出的異常,多個(gè)異??梢允褂枚禾?hào)分隔,使用throws關(guān)鍵字將異常拋給上一級(jí)后,如果不想處理該異常,可以繼續(xù)向上拋出,但最終要有能夠處理該異常的代碼。/*在類Main中創(chuàng)建pop()方法,在該方法中拋出Exception異常,在主方法中調(diào)用該方法,并實(shí)現(xiàn)異常處理*/publicclass Main / 創(chuàng)建類staticvoid pop() throws Exception /定義方法并拋出異常int a=1/0; / 除數(shù)為 0publicstaticvoidmain(Stringargs ) / 主方法try pop ();

8、/ 調(diào)用 pop()方法 catch (Exceptione) System, out .println( "pop()方法拋出的異?!?;/輸出異常信息/*使用throw 關(guān)鍵字直接在程序中拋出異常*/P ublicclassMain publicstaticvoidmain(Stringargs ) int a = 1;if (a=1) throw newNumberFormatExce ptio n(); else System. out .pnntln( a);final用于聲明屬性、方法和類,分別表示屬性不可變、方法不可覆蓋和類不可被繼承。Fin ally作為異常處理的一部

9、分,只能用在try/catch語句中,并且附帶個(gè)語句塊,表示這段語句最終一定被執(zhí)行。/*類Ma in被聲明為final,所以不能被繼承,所有方法都不能被重寫。* fin ally中的代碼一定會(huì)被執(zhí)行,即使程序被return中。*/P ublicfi nalclassMain p ublicstaticvoidmain(Stringargs ) Main m =new Main();try throw newNull Poi nterExce ptio n(); catch (NullPointerExceptione) System. out .println( ” 程序拋出了異?!?; fi

10、n allySystem. out .prin tl n( ” 執(zhí)行了 fin ally 語句塊”);3、編寫一個(gè)描述學(xué)生基本情況的類,屬性包括姓名,學(xué)號(hào),語文成績(jī),數(shù)學(xué)成績(jī)和英語成績(jī),方法包括信息輸出,設(shè)置姓名和學(xué)號(hào),設(shè)置三門課程成績(jī),計(jì)算總成績(jī)和平均成績(jī)。在main方法中對(duì)方法進(jìn)行測(cè)試(15 分)答:publicclass MainP rivateString nu mber,name ;p rivatedoubleChin eseMath ,English ;public Main(Stringa,String b,double c,double d,double e)/ 有參構(gòu)造函數(shù)n

11、u mber = a;name = b;Chin ese = c;Math =d;En glish = e;publicvoidsetName(Stringname )/ 設(shè)置姓名this .name = name ;publicvoid setNumber(String num )/ 設(shè)置學(xué)號(hào)this .number = num ;publicvoidsetChinese( double score )/ 設(shè)置語文成績(jī)this .Chinese = score ;p ublicvoidsetMath( double score )/ 設(shè)置數(shù)學(xué)成績(jī)this .Math=score ;p ubl

12、icvoidsetEnglish( double score )/ 設(shè)置英語成績(jī)this .English = score ;public String getNumber() / 獲取學(xué)號(hào)return number ;p ublic String getName()return name ;p ublicdoublegetCh in ese()return Chinese ;publicdouble getMath()return Math ;p ublicdoublegetE nglish()return English ;publicdouble getSum() / 計(jì)算總成績(jī)r(jià)etu

13、r ngetChi nese()+getMath()+getE nglish();publicdouble getAverage() / 計(jì)算平均成績(jī)r(jià)eturn getSum()/3;publicvoid show() / 信息輸出System. out .println("姓名:"+getName();System. out 卩和如(”學(xué)號(hào):"+getNumber();System. out .println( ”語文成績(jī):"+getChinese();System. out .println( ”語文成績(jī):"+getMath();Syst

14、em. out 卩和如(”語文成績(jī):"+getEnglish();Publicstaticvoidmain(Stringargs )Ma in s1 = new Mai n( "12213",”sn ame" ,85,82,98); / 調(diào)用有參構(gòu)造函數(shù)初始化s1 .setChinese(95); / 設(shè)置語文成績(jī)s1.show(); /輸出所有信息System. out .println( ” 總成績(jī):"+s1.getSum()+ "平均分:"+String. format ("%.2f" , s1.g

15、etAverage(); / 平均分結(jié)果保留兩位小數(shù)4、Java中實(shí)現(xiàn)多線程有幾種方式?這幾種方式有什么區(qū)別?然后采取其中一種方式設(shè)計(jì)一個(gè)線程例子,在例子中構(gòu)造4個(gè)線程對(duì)象實(shí)現(xiàn)對(duì)同一數(shù)據(jù)類對(duì)象進(jìn)行操作(數(shù)據(jù)初始值為0),其中線程對(duì)象1對(duì)數(shù)據(jù)執(zhí)行+10的操作,線程對(duì)象 2對(duì)數(shù)據(jù)執(zhí)行+20的操作,對(duì)象3對(duì)數(shù)據(jù)執(zhí)行乘以3的操作,線程對(duì)象 4對(duì)數(shù)據(jù)執(zhí)行除以4的操作,要求考慮線程同步,保證數(shù)15分)據(jù)操作的正確性。要求提供程序代碼以及運(yùn)行結(jié)果截圖(答:四種方式:繼承Thread類,重寫其中的run方法,最后調(diào)用其 start方法,開啟新的線程來執(zhí)行重寫的run方法。實(shí)現(xiàn)Runnable 接口實(shí)現(xiàn)里面的r

16、un方法,將該實(shí)現(xiàn)類的對(duì)象傳入Thread中,調(diào)用Thread的start方法,開啟新的線程來執(zhí)行Runnable接口實(shí)現(xiàn)類的run方法。實(shí)現(xiàn)Callable接口實(shí)現(xiàn)里面的call方法,將該實(shí)現(xiàn)類的對(duì)象傳入FutureT ask對(duì)象中,再將FutureT ask對(duì)象傳入Thread中,調(diào)用Thread的start方法,開啟新的線程來執(zhí)行Callable接口實(shí)現(xiàn)類的call方法。Future接口實(shí)現(xiàn)類對(duì)象=ExecutorService接口實(shí)現(xiàn)類對(duì)象即線程池對(duì)象.submit(Callable接口實(shí)現(xiàn)類對(duì)象),以上使用線程池來實(shí)現(xiàn)多線程。四種方式的區(qū)別: 相比于繼承Thread類,實(shí)現(xiàn)Runna

17、ble 接口,Callable可以避免Java單繼承帶來的局限 性;Runnable,Callable接口的實(shí)現(xiàn)類可以被多個(gè)線程共享,實(shí)現(xiàn)了代碼的復(fù)用。繼承Thread類和實(shí)現(xiàn)Runnable方法都是實(shí)現(xiàn)run方法,沒有返回值,而另外兩種都要實(shí) 現(xiàn)Callable接口的call方法,有返回值。二、編程題label )和一個(gè)顯示面板,1、編寫一個(gè)圖形用戶界面程序,包含兩個(gè)按鈕,一個(gè)信息標(biāo)簽(兩個(gè)按鈕分別為“擲色子”和“移動(dòng)”,在顯示面板中顯示一個(gè)小人(用小圓以及線繪制)隨機(jī)設(shè)定小人的初始位置,當(dāng)點(diǎn)擊“擲色子”按鈕,隨機(jī)產(chǎn)生移動(dòng)信息(上移,下移,左移, 右移,移動(dòng)幾步),并顯示在信息標(biāo)簽中,點(diǎn)擊移

18、動(dòng),按照產(chǎn)生的移動(dòng)信息,讓小人進(jìn)行移動(dòng)。要求提供完整程序代碼以及運(yùn)行結(jié)果截圖(20分)答:import java.awt.*;import javax.swi ng.*;p ublic class Jxxk exte nds JFrame while(flag)private JTabbed Pane tabbed Pane;private JLabel Iabel1,label2,label3;p rivate JPanel pan el1, pan el2, pan el3;p ublic Jxxk()super(” 選項(xiàng)卡窗口 ”); setSize(400,300);Container

19、 c = getC ontentPan e();tabbedPane=new JTabbedPane();/創(chuàng)建選項(xiàng)卡面板對(duì)象/創(chuàng)建標(biāo)簽 c.add(tabbed Pan e);label仁 new JLabel("第一個(gè)標(biāo)簽的面板",Swi ngCo nsta nts.CENTER);label2=new JLabel("第二個(gè)標(biāo)簽的面板",Swi ngCo nsta nts.CENTER);label3=new JLabel("/創(chuàng)建面板第三個(gè)標(biāo)簽的面板",Swi ngCo nsta nts.CENTER);pan el1= ne

20、w JPan el();pan el2=new JPan el();pan el3=new JPan el();pan el1.add(label1);pan el2.add(label2);pan el3.add(label3);pan el1.setBackgro un d(Color.yellow);pan el2.setBackgro un d(Color.blue);pan el3.setBackgro un d(Color.gree n);/將標(biāo)簽面板加入到選項(xiàng)卡面板對(duì)象上tabbed Pane.addTab("tabbed Pane.addTab("tabbe

21、d Pane.addTab("標(biāo)簽 1", null, pan el1,"First pan el"); 標(biāo)簽 2", null, pan el2,"Seco nd pan el");標(biāo)簽 3", null, pan el3,"Third pan el");c.setBackgro un d(Color.white);setVisible(true);setDefaultCloseO peratio n(JFrame.EXIT_ON_CLOSE);P ublic static void main

22、( Stri ng args) Jxxk d = new Jxxk();2、編寫一個(gè)班級(jí)推優(yōu)(優(yōu)秀學(xué)生干部)投票管理程序。列出參與推優(yōu)的學(xué)生名單(名),票,每次投票后能夠顯示當(dāng)前投票人數(shù)以及每名候選者得票數(shù),圖形化柱狀圖顯示得票數(shù),可以可以勾選進(jìn)行投票,要求每個(gè)參選學(xué)生前面有圖標(biāo)表示候選人的職務(wù),每人可以投保存投票結(jié)果到文本文件。要求提供完整程序代碼以及運(yùn)行結(jié)果截圖(20分)答:P ublic class Vote Op erate private Person per = new Person("小張",001,0),new Person("小王",0 02,0), new Person("小夏",003,0), new Person(" 丁丁",0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論