語言程序設計》答案_第1頁
語言程序設計》答案_第2頁
語言程序設計》答案_第3頁
語言程序設計》答案_第4頁
語言程序設計》答案_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、中國石油大學(北京)遠程教育學院期 末 考 試 Java語言程序設計 學習中心:_ _ 姓名:_ 學號:_ 關于課程考試違規作弊的說明1、提交文件中涉嫌抄襲內容(包括抄襲網上、書籍、報刊雜志及其他已有論文),帶有明顯外校標記,不符合學院要求或學生本人情況,或存在查明出處的內容或其他可疑字樣者,判為抄襲,成績為“0”。 2、兩人或兩人以上答題內容或用語有50%以上相同者判為雷同,成績為“0”。3、所提交試卷或材料沒有對老師題目進行作答或提交內容與該課程要求完全不一、題型 簡答題,4題,每題15分,共60分;編程題,2題,每題20分,共40分二、題目共兩套題,學號末尾數單號學生做第一套,學號末尾數

2、雙號學生做第二套題第一套題一、簡答題1 什么是多態性? 方法的重載和覆蓋有何區別? 閱讀下列代碼,指出其中存在的重載和覆蓋, 寫出輸出結果是什么?解釋為什么這樣輸出? (15分)class C1 public void f() System.out.println(C1.f);class C2 extends C1public void f() System.out.println(C2.f); class C3 public void g(C1 one) System.out.println(g(C1);one.f();public void g(C2 two) System.out.pri

3、ntln(g(C2);two.f();public class Main1 public static void main(String args) C1 one = new C2();C3 three = new C3();three.g(one);答:1.多態性是指允許不同類的對象對統一消息做出響應。多態包括參數化多態和包含多態。多態性語言具有靈活、抽象、行為共享、代碼共享等優勢,很好地解決了應用程序函數同名問題。重載是指同一個類中有多個同名的方法,但這些方法有著不同的參數,因此在編譯時就可以確定到底調用哪個方法,它是一種編譯時多態。覆蓋是指子類可以覆蓋父類的方法,同樣的方法會在子類和父類

4、中有著不同的變現形式。即重載是一個類的多態性表現,而覆蓋是子類和父類的一種多態性表現。classC1publicvoidf() System.out.println(C1.f); classC2extendsC1publicvoidf() System.out.println(C2.f);/覆蓋,子類C2重寫了父類C1中的f()方法 classC3 publicvoidg(C1one) System.out.println(g(C1);one.f(); publicvoidg(C2two) /重載,根據傳入參數不同,C3實現不同的g()方法 System.out.println(g(C2);t

5、wo.f(); publicclassMain1publicstaticvoidmain(Stringargs) C1one=newC2(); C3three=newC3();three.g(one); 輸出:g(C1)C2.f原因:由于子類C2的f()方法與父類C1的方法同名,因此C2的方法會覆蓋C1的方法。在執行C1 one = new C2()語句時,會調用C1類的構造函數,因此three.g(one)語句會調用傳入參數為C1的g()方法,輸出g(C1)。而由于實際創建的是C2類的方法,后面的方法調用都會調用子類C2的方法,因此輸出C2.f。2、請用自己的語言介紹throw/throws

6、有什么聯系和區別?在程序中應如何使用?另外談談final、finally的區別和作用,必須舉例說明用法。(15分)答:若某個方法可能會發生異常,但不想在當前方法中處理這個異常,則可以使用throws、throw關鍵字在方法中拋出異常。throw關鍵字通常用于方法體中,并且拋出一個異常對象,程序在執行到throw語句時立即終止,它后面的語句都不執行。throws關鍵字通常被應用在聲明方法時,用來指定方法可能拋出的異常,多個異??梢允褂枚禾柗指?,使用throws關鍵字將異常拋給上一級后,如果不想處理該異常,可以繼續向上拋出,但最終要有能夠處理該異常的代碼。/*在類Main中創建pop()方法,在該

7、方法中拋出Exception異常,在主方法中調用該方法,并實現異常處理*/publicclassMain /創建類staticvoidpop()throwsException /定義方法并拋出異常inta=1/0;/除數為0 publicstaticvoidmain(Stringargs) /主方法trypop();/調用pop()方法 catch(Exceptione) System.out.println(pop()方法拋出的異常);/輸出異常信息 /*使用throw關鍵字直接在程序中拋出異常*/publicclassMain publicstaticvoidmain(Stringargs

8、) inta= 1;if(a=1) thrownewNumberFormatException(); else System.out.println(a); final用于聲明屬性、方法和類,分別表示屬性不可變、方法不可覆蓋和類不可被繼承。Finally作為異常處理的一部分,只能用在try/catch語句中,并且附帶一個語句塊,表示這段語句最終一定被執行。/*類Main被聲明為final,所以不能被繼承,所有方法都不能被重寫。* finally中的代碼一定會被執行,即使程序被return中。*/publicfinalclassMain publicstaticvoidmain(Stringar

9、gs) Mainm=newMain();trythrownewNullPointerException(); catch(NullPointerExceptione) System.out.println(程序拋出了異常); finally System.out.println(執行了finally語句塊); 3、編寫一個描述學生基本情況的類,屬性包括姓名,學號,語文成績,數學成績和英語成績,方法包括信息輸出,設置姓名和學號,設置三門課程成績,計算總成績和平均成績。在main方法中對方法進行測試(15分)答:publicclass MainprivateStringnumber,name;pr

10、ivatedoubleChinese,Math,English;publicMain(Stringa,Stringb,doublec,doubled,doublee)/有參構造函數number=a;name=b;Chinese=c;Math=d;English=e; publicvoidsetName(Stringname)/設置姓名=name; publicvoidsetNumber(Stringnum)/設置學號this.number=num; publicvoidsetChinese(doublescore)/設置語文成績this.Chinese=score; publ

11、icvoidsetMath(doublescore)/設置數學成績this.Math=score; publicvoidsetEnglish(doublescore)/設置英語成績this.English=score; publicString getNumber()/獲取學號returnnumber; publicString getName()returnname; publicdoublegetChinese()returnChinese; publicdoublegetMath()returnMath; publicdoublegetEnglish()returnEnglish; pu

12、blicdoublegetSum()/計算總成績returngetChinese()+getMath()+getEnglish(); publicdoublegetAverage()/計算平均成績returngetSum()/3; publicvoidshow()/信息輸出 System.out.println(姓名:+getName(); System.out.println(學號:+getNumber(); System.out.println(語文成績:+getChinese(); System.out.println(語文成績:+getMath(); System.out.printl

13、n(語文成績:+getEnglish(); publicstaticvoidmain(Stringargs) Mains1=newMain(12213,sname,85,82,98);/調用有參構造函數初始化s1.setChinese(95);/設置語文成績s1.show();/輸出所有信息 System.out.println(總成績:+s1.getSum()+平均分:+String.format(%.2f,s1.getAverage();/平均分結果保留兩位小數 4、Java中實現多線程有幾種方式?這幾種方式有什么區別?然后采取其中一種方式設計一個線程例子,在例子中構造4個線程對象實現對同

14、一數據類對象進行操作(數據初始值為0),其中線程對象1對數據執行+10的操作,線程對象2對數據執行+20的操作, 對象3對數據執行乘以3的操作,線程對象4對數據執行除以4的操作,,要求考慮線程同步,保證數據操作的正確性。要求提供程序代碼以及運行結果截圖(15分)答:四種方式: 繼承Thread類,重寫其中的run方法,最后調用其start方法,開啟新的線程來執行重寫的run方法。實現Runnable接口實現里面的run方法,將該實現類的對象傳入Thread中,調用Thread的start方法,開啟新的線程來執行Runnable接口實現類的run方法。實現Callable接口實現里面的call方

15、法,將該實現類的對象傳入FutureTask對象中,再將FutureTask對象傳入Thread中,調用Thread的start方法,開啟新的線程來執行Callable接口實現類的call方法。Future接口實現類對象=ExecutorService接口實現類對象即線程池對象.submit(Callable接口實現類對象),以上使用線程池來實現多線程。四種方式的區別: 相比于繼承Thread類,實現Runnable接口,Callable可以避免Java單繼承帶來的局限性;Runnable,Callable接口的實現類可以被多個線程共享,實現了代碼的復用。繼承Thread類和實現Runnabl

16、e方法都是實現run方法,沒有返回值,而另外兩種都要實現Callable接口的call方法,有返回值。二、編程題1、編寫一個圖形用戶界面程序,包含兩個按鈕,一個信息標簽(label)和一個顯示面板,兩個按鈕分別為“擲色子”和“移動”,在顯示面板中顯示一個小人(用小圓以及線繪制),隨機設定小人的初始位置,當點擊“擲色子”按鈕,隨機產生移動信息(上移,下移,左移,右移,移動幾步),并顯示在信息標簽中,點擊移動,按照產生的移動信息,讓小人進行移動。要求提供完整程序代碼以及運行結果截圖(20分)答:import java.awt.*;import javax.swing.*;public class

17、Jxxk extends JFrameprivate JTabbedPane tabbedPane;private JLabel label1,label2,label3;private JPanel panel1,panel2,panel3; public Jxxk()super(選項卡窗口); setSize(400,300); Container c = getContentPane();tabbedPane=new JTabbedPane();/創建選項卡面板對象/創建標簽label1=new JLabel(第一個標簽的面板,SwingConstants.CENTER);label2=

18、new JLabel(第二個標簽的面板,SwingConstants.CENTER);label3=new JLabel(第三個標簽的面板,SwingConstants.CENTER);/創建面板panel1=new JPanel();panel2=new JPanel();panel3=new JPanel(); panel1.add(label1);panel2.add(label2);panel3.add(label3); panel1.setBackground(Color.yellow);panel2.setBackground(Color.blue);panel3.setBackg

19、round(Color.green);/將標簽面板加入到選項卡面板對象上tabbedPane.addTab(標簽1,null,panel1,First panel);tabbedPane.addTab(標簽2,null,panel2,Second panel);tabbedPane.addTab(標簽3,null,panel3,Third panel); c.add(tabbedPane);c.setBackground(Color.white); setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public st

20、atic void main(String args)Jxxk d = new Jxxk();2、編寫一個班級推優(優秀學生干部)投票管理程序。列出參與推優的學生名單(6名),可以勾選進行投票,要求每個參選學生前面有圖標表示候選人的職務,每人可以投3票,每次投票后能夠顯示當前投票人數以及每名候選者得票數,圖形化柱狀圖顯示得票數,可以保存投票結果到文本文件。要求提供完整程序代碼以及運行結果截圖(20分)答:public class VoteOperate private Person per = new Person(小張,001,0),new Person(小王,002,0), new Person(小夏,003,0),new Person(丁丁,00

溫馨提示

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

評論

0/150

提交評論