第4章-Java語言與面向對象作業(yè)習題與答案_第1頁
第4章-Java語言與面向對象作業(yè)習題與答案_第2頁
第4章-Java語言與面向對象作業(yè)習題與答案_第3頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第4章 Java語言與面向對象作業(yè)習題與答案一、簡答題1 什么是對象?什么是類?對象是一種抽象數據類型。它包含了事物的靜態(tài)特征屬性和動態(tài)特征行為兩大 特征。類是一組同種對象的集合與抽象。即是具有相同屬性和方法的一組對象集合。2 Java語言的單繼承是指什么?一個類可以派生出多個子類,但子類只允許有一個父類,而不允許存在多個父類。3 在一個共有類中的數據成員及方法成員的訪問控制符為缺省,那么這個類可供什么樣的包 引用?當一個類的訪問控制符為public共有時,說明這個類作為整體對其它類是可見和可引用的;但其數據成員和方法成員訪問控制符為缺省時,它們只能被包中類含當前類引用。4 抽象類的用途1設計

2、在更高的層次上進行,不考慮具體對象,從而大大簡化了處理問題的復雜性;2設計出的類也具有更加良好的可擴展性。5 什么是非靜態(tài)的成員變量?非靜態(tài)成員即為實例成員變量沒有加static修飾的變量。6.異常Exception和錯誤Error有什么不同? Java如何處理它們?答:錯誤通常是指程序本身存在非法情形,常常是因為代碼存在問題而引起的,如造成 系統(tǒng)崩潰、虛擬機粗錯、動態(tài)鏈接失敗等,這一類錯誤無法恢復或不可能捕獲,并將導 致應用程序中斷。異常表示另外一種“非同尋常的錯誤。這種錯誤通常是不可預測,但可以被捕獲 且可以恢復。常見的異常情況包括內存缺乏、找不到所需文件等。對于錯誤,編程人員可以通過對程

3、序進行更仔細的檢查,以防止這種錯誤。 對于異常,可以使用捕獲機制進行捕獲,再編寫出相應的處理程序。7簡單陳述Java的異常處理機制。答:Java采取“拋出一捕獲的方式,一旦一個異常想象產生,Runnable環(huán)境和應用程序會拋出各種標準類型和自己定義的異常,系統(tǒng)就可以捕獲這些異常,并一定有相應的 機制來處理它,確保不會產生司機、死循環(huán)或其它對操作系統(tǒng)的損害,從而保證了整個 程序運行的平安性。&簡單陳述throw語句和throws關鍵字之間的差異。答:throw語句是在一個方法中用來直接拋出異常對象,其格式是:throw異常對象;throws關鍵字是用一個方法聲明首部,用來指出這個方法中可能產生假

4、設干種異常,其格式:方法修飾符返回類型 方法名參數表throws異常類型表/*方法體*/二、填空題1 .所有Java應用程序都必須包含的一個類方法是main()。2 面向對象程序設計語言的三種重要特性是封裝性、繼承性和多態(tài)性 。3 方法重載與方法覆蓋的不同有:方法重載是指允許在同一個類中定義多個同名方法,它們通過形參的個數或形參參數的類型來區(qū)別;方法覆蓋是指在子類中重新定義了與父類中的方法同名的方法。4 .面向對象程序設計語言的多態(tài)的事項方法主要有三種:方法重載、方法覆蓋和接口。5 對象之間的信息通過 消息傳遞機制 來完成。6 .成員變量的修飾符有寫出6 種public, frie ndly,

5、 protected, private, fin al, static 。7 整個類共同擁有的方法是用static修飾的方法或叫類成員方法;它具有統(tǒng)計一個類的實例個數等用途。&弓I用父類中的成員用super ;引用當前的類或對象用this。9 在面向對象中,繼承有兩種含義,分別指在類的層次結構中,子類自動繼承父類的特性和同一類的所有實例對象都具有所屬類的特征。10. 在Java語言中,所有類都是Object類的子類。11. 多繼承問題指的是一個類有多個父類 問題;在Java語言中通過 接口方法解決多繼承問題。12 接口是一種特殊的類,它只能定義一些抽象方法和常量。13. 在Java語言中,一組

6、類和接口的集合通常被稱為類庫或API包或應用程序接口 。14. 給出引用包的兩種方法是:使用包名、類名做前綴;使用 import語句。15. Java語言異常處理三種方式是:捕獲異常、聲明異常和自定義異常16. 程序設計過程中可能會出現的兩種錯誤是編譯錯誤和運行錯誤。17. 程序設計過程后的運行錯誤大致有三類。它們是邏輯錯誤、用戶輸入不合法和硬件設備 出錯。18. 在Java語言中,用try-catch-final結構來捕獲并處理異常。19. 用戶程序使用throw new異常類名;拋出自己的異常。20. 自定義異常類必須繼承Exception類。三、選擇題1. 下述聲明中哪一種可以防止該類產

7、生子類?A . static class DEFB. private calss DEFC. abstract class DEFD. final public class DEFE. final abstract class DEF答案:D。Final防止有子類繼承,因此可選擇D、E。但final不可以和abstract連用,因此E也錯。2. 如果要求子類可以在任何包中訪問父類的成員,下面哪一個修飾符可以到達這個目標的最 為嚴格的修飾符?A . publicB. privateC. protectedD .無修飾符答案:CoA和C都可以做到這點,但 A更為寬松,不僅僅是任何包中的子類,而且任

8、何包中和包外的類都可以訪問它。D只能被同一個包內的類訪問,所以D不符合要求。而 B比D更為嚴格。3. 程序的封裝性是如何實現的?A 由應用程序的設計者實現B 由應用程序的使用者實現C.由應用程序的設計和使用者實現D 由操作系統(tǒng)實現答案: A。4以下哪個選項是錯誤的?A 子類對象可以轉化成父類對象B 父類對象一般不轉化成子類對象C.子類對象與父類對象之間不能轉化D 子類對象轉化為父類對象后,對于子類與父類共有的方法,仍然調用子類的方法。答案: C。5 以下哪個選項能表達Java語言的多態(tài)性?A .匿名類B .內布類C.方法重載D .方法覆蓋答案: C。6以下哪個選項正確?A Error 類是一個

9、 RuntimeException 異常B 任何拋出一個 RuntimeException 異常的語句必須包含在 try 塊內。C.任何拋出一個 Error對象的語句必須包含在try塊內。D .任何拋出一個 Exception異常的語句必須包含在try塊內。答案: DError 代表程序中不可捕獲的問題,與 Exception 類同在一個層次,而 RuntimeException 是 Exception 的子類,所以 Error 類不可能是一個 RuntimeException 類型的異常;拋出一個 RuntimeException 異常不一定要在 try 塊內,它是由 JVM 正常拋出,不需

10、要 throw 和 throws 語句,因而也不一定要有catch語句去捕獲,所以可以不出現在try塊中;Error類型的問題是不可恢復的,多以沒有規(guī)定要去捕獲Error,因而也可以不出現在try塊中;對于拋出一個Exception 對象的語句,如果沒有包含在 try 塊之內,有可能編譯不能通過,因此選項 D 是必 須的。7 有如下程序,給出程序運行結果? import java.io.*;public class ExceptionTest public static void main(String args) try methodA(); catch(IOException e) Sys

11、tem.out.println( “Caught Exception );public void methcdA() throw new IOException(); A .代碼不能編譯B 輸出: Caught ExceptionC.輸出:CaughtIO ExceptionD 程序正常運行后無任何信息輸出答案: A首先, methcdA 是非靜態(tài)方法,不能出現在 main 中;其次,就算 methcdA 是靜態(tài)方法, IOException 是可檢測異常,必須被 catch 捕獲或是被 throws 聲明,但程序中沒有聲明 throws, 所以 try 語句塊不可能拋出 IOExceptio

12、n 這個異常, 而 catch 也就談不到捕獲它了, 所以兩個條 件都沒有滿足,編譯同樣錯誤。在 methcdA 方法定義語句的前面加 static ,后面加上 throws IOException ,程序就可以調試 通過了。8有如下程序,在程序的 point x 處增加如下哪個選項程序才能通過編譯?public class ExceptionTest calss TestException extends Exception public void runTest() throws TestException/point xB catch(Exception)D catch(TestExce

13、ption)C 里邊的 RuntimeException 是 Exception,所以錯誤;由于runTest() 拋出的是public void test() runTest(); A throws ExceptionC throws RuntimeException 答案: A沒有try就不能有catch,所以B, D錯;而 的子類,不能用捕“小魚的工具去捕“大魚TestExcption ,而 TestExcption 又是 Excption 的子類,因此用到 runTest 方法就必須拋出 Excption 異常。9有如下程序,該程序的運行結果是?public class Exc_4 p

14、ublic static void main(String args) try return; finallySystem.out.println( “Finally );A .程序無輸出B .程序輸出“ Finally C.代碼可以通過編譯但執(zhí)行時產生異常D .因為缺少catch塊所以編譯出錯答案: B程序中有catch那么必須有try,但反之不成立,所以 D不對;關于try-catch-finally的 問題,程序中如果遇到 return,那么fin ally塊先被執(zhí)行,然后再執(zhí)行 return,而fin ally塊后 面的語句將不被執(zhí)行。 如果遇到System.exit(l),那么退出J

15、VM ,整個程序退出,當然fin ally 塊其后的語句都不執(zhí)行。10.有如下程序,如果methodA() 拋出 IOException 異常,該程序的運行結果是?class Exc_5 public static void main(String args) try methodA(); catch(IOException e) System.out.println( “caught IOException ); catch(Exception e) System.out.println( “caught Exception ); 答案: caught IOException如果 metho

16、dA() 拋出 IOException 異常,被語句 5 捕獲,輸出“ caught IOException四、編程題1試編寫出要創(chuàng)立一個職工類Employee 。這個類中的一個成員變量應該包括職工號getempNum、Name;其操作方法一個是用來設置set職工的工號,另一個操作方法是用來取得職工工號。建議按兩步完成設計:一步是寫出類的頭結構;另外一步是完成成員聲明。class Employee public empNum;public Name;public int setNum(int _empNum)int empNum=_empNum;return empNum;int void g

17、etNum()Employee A;int empNum=A.setNum(2001);System.out.println( 職工工號為: + empNum);2創(chuàng)立一個名為 List 的顯示類,它可以存儲任何類型的對象,并可以在任何時候增加或刪 除對象。class List private int maxItems=100;private int numItems=0;private Object list=null ;public List() list=new ObjectmaxItems; public List( int _maxItems)maxItems=_maxItems;l

18、ist=new ObjectmaxItems; public void add(Object obj)list numItems =obj; numItems +; public void delete(int pos)for (int i=pos+1; i= maxItems ); public String toString() String s=new String();for (int i=0; i numItems; i+) s+=n +listi.toString(); return s+n ;public class ListTest public static void mai

19、n(String args)List list= new List(); list.add( new Double(10.0); list.add( new String( Java by Definition ); list.add( new Integer(-10);System.out .println(list);System.out .println( Position 0: +list.get(1); list.delete(2);list.delete(0);System.out .println( List Size: +list.getSize(); 程序運行結果:Java

20、by Definition -10Position 0:Java by DefinitionList Size:13創(chuàng)立帳號 SavingsAccount 類。用靜態(tài)變量存儲年利率。該類的每個對象都有一個私有實例 變量 savingBalance 用來顯示帳號里的錢數。 提供方法 calculateMonthlyInterest 計算月利息 按 照年利率乘以帳號里的錢數再除以12;該利息必須加到實例變量中。提供一個靜態(tài)方法modifyInterestRate 設置年利率。寫一個測試程序 CalculatorInterest 來測試該類。建立兩個該類 對象,saverl和saver2,分別有人民

21、幣2000元和3000元。設年利率為 4%。計算每個帳號的月利息及新的錢數。設年利率為 5%。計算每個帳號下月的利息及新錢數。import java.io.*;public class CalculatorInterest/ 測試程序 public static void main(String args) SavingsAccount saver1=new SavingsAccount(2000);/聲明兩個對象SavingsAccount saver2=new SavingsAccount(3000);SavingsAccount. modifyInterestRate(0.04);Sys

22、tem.out.print(InterestRate);saver1.printR();System.out.print(saver1 s balance)i;s:saver1.printB();System.out.print(saver2 s balance)i;s:saver2.printB();SavingsAccount. modifyInterestRate(0.05);/設置利率為 4%/輸出利率/輸出用戶 1的總額/輸出用戶 2的總額/設置利率為 5%System.out.print(InterestRate);/輸出利率saver1.printR();System.out.p

23、rint(saver1 s balance)i;s: saver1.printB();/輸出用戶 1的總額System.out.print(saver2 s balance)is: saver2.pri ntB();class Savin gsAcco unt private double savingsBalanee;static double annuallnterestRate;輸出用戶2的總額聲明實例變量聲明靜態(tài)變量public SavingsAccount( double x) savingsBalance=x; 構造函數public void add(double x) sav i

24、n gsBala nce= savi ngsBala nce+x; / 計算總存款public static void modify In terestRate( double x) annu all nterestRate =x; II年利率public void printB() System. out.println( savingsBalance*(1+ annuallnterestRate); II輸出總額public void printR() System. out.println( annuallnterestRate); II輸出年利息程序運行結果:saverlsaver2s

25、averlsaver24.設計一個交通工具類 vehicle ,其中的屬性包括速度 speed種類kind ;方法包括:設置 顏色setColor,取得顏色getColor。再設計一個子類 Car,增加屬性passenger表示可容納旅客 人數,添加方法取得最大速度 getMaxSpeed()。import java.awt.*;public class vehicle private int speed;privateprivateString kind;public vehicle。speec=2000;kind = TO; color =Color. red;public vehicle( int s, String k, Color c) speed=s;ki nd = k;color =c;public void setColor(Color cl) color=cl; public void getColor(String)if (equals(ki nd, k) return color; class Car exte nds vehicl

溫馨提示

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

評論

0/150

提交評論