Java-2實(shí)用教程(第5版)習(xí)題解答_第1頁(yè)
Java-2實(shí)用教程(第5版)習(xí)題解答_第2頁(yè)
Java-2實(shí)用教程(第5版)習(xí)題解答_第3頁(yè)
Java-2實(shí)用教程(第5版)習(xí)題解答_第4頁(yè)
Java-2實(shí)用教程(第5版)習(xí)題解答_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、習(xí)題解答習(xí)題1 (第 1章)一、問(wèn)答題1. Java語(yǔ)言的主要貢獻(xiàn)者是誰(shuí)?2 開(kāi)發(fā)Java應(yīng)用程序需要經(jīng)過(guò)哪些主要步驟?3 Java源文件是由什么組成的? 一個(gè)源文件中必須要有public類嗎?4 .如果JDK的安裝目錄為 D:jdk,應(yīng)當(dāng)怎樣設(shè)置 path和classpath的值?5. Java源文件的擴(kuò)展名是什么?Java字節(jié)碼的擴(kuò)展名是什么?6 .如果Java應(yīng)用程序主類的名字是Bird,編譯之后,應(yīng)當(dāng)怎樣運(yùn)行該程序?7 .有哪兩種編程風(fēng)格,在格式上各有怎樣的特點(diǎn)?1. James Gosling2 .需3個(gè)步驟:1) 用文本編輯器編寫源文件。2) 使用javac編譯源文件,得到字節(jié)碼文

2、件。3) 使用解釋器運(yùn)行程序。3 .源文件由若干個(gè)類所構(gòu)成。對(duì)于應(yīng)用程序,必須有一個(gè)類含有public static voidmain(String args)的方法,含有該方法的類稱為應(yīng)用程序的主類。不一定,但至多有一個(gè)public 類。4. set classpath=D:jdkjrelibrt.jar;.;5. java 禾口 class6. java Bird7. 獨(dú)行風(fēng)格(大括號(hào)獨(dú)占行)和行尾風(fēng)格(左大擴(kuò)號(hào)在上一行行尾,右大括號(hào)獨(dú)占行)二、選擇題1. B。2. D。1. 下列哪個(gè)是JDK提供的編譯器?A) java.exeB) javac.exeC) javap.exeD) java

3、w.exe2. 下列哪個(gè)是 Java應(yīng)用程序主類中正確的main方法?A) public void main (Stri ng args)B) static void main (Stri ng args)C) public static void Mai n (Stri ng args)D) public static void main (String args)三、閱讀程序 閱讀下列Java源文件,并回答問(wèn)題。public class Pers on void speakHello() System.out.print("您好,很高興認(rèn)識(shí)您 ”);System.out.pri

4、ntln (” nice to meet you");class Xiti public static void main(String args) Pers on zha ng = new Pers on();zha ng.speakHello();(a) 上述源文件的名字是什么?(b) 編譯上述源文件將生成幾個(gè)字節(jié)碼文件?這些字節(jié)碼文件的名字都是什么?(c) 在命令行執(zhí)行java Person得到怎樣的錯(cuò)誤提示?執(zhí)行 java xiti得到怎樣的錯(cuò)誤提示? 執(zhí)行java Xiti.class得到怎樣的錯(cuò)誤提示?執(zhí)行 java Xiti得到怎樣的輸出結(jié)果?1. ( a) Perso

5、n.java。 ( b)兩個(gè)字節(jié)碼,分別是 Person.class 和 Xiti.class。 ( c)得到 “ NoSuchMethodError ”,得到"NoClassDefFoundError: Xiti/class ”,得到"您好,很高興認(rèn) 識(shí)您 nice to meet you”習(xí)題2 (第2章)一、問(wèn)答題1. 什么叫標(biāo)識(shí)符?標(biāo)識(shí)符的規(guī)則是什么?false是否可以作為標(biāo)識(shí)符。2. 什么叫關(guān)鍵字? true和false是否是關(guān)鍵字?請(qǐng)說(shuō)出 6個(gè)關(guān)鍵字。3. Java的基本數(shù)據(jù)類型都是什么?4. float型常量和double型常量在表示上有什么區(qū)別?5. 怎樣獲

6、取一維數(shù)組的長(zhǎng)度,怎樣獲取二維數(shù)組中一維數(shù)組的個(gè)數(shù)。1. 用來(lái)標(biāo)識(shí)類名、變量名、方法名、類型名、數(shù)組名、文件名的有效字符序列稱為標(biāo)識(shí)符。 標(biāo)識(shí)符由字母、下劃線、美元符號(hào)和數(shù)字組成,第一個(gè)字符不能是數(shù)字。false不是標(biāo)識(shí)符。2. 關(guān)鍵字就是Java語(yǔ)言中已經(jīng)被賦予特定意義的一些單詞,不可以把關(guān)鍵字作為名字來(lái)用。true 禾口 false 不是關(guān)鍵字。 6 個(gè)關(guān)鍵字: class impleme nts in terface enum exte nds abstract o3. boolean, char, byte, short, int, long , float, double。4. fl

7、oat常量必須用F或f為后綴。double常量用D或d為后綴,但允許省略后綴。5. 一維數(shù)組名.length。二維數(shù)組名.length。二、選擇題adf2. 下列哪三項(xiàng)是正確的float變量的聲明?A. float foo = -1;B. float foo = 1.0;C. float foo = 42e1;D. float foo = 2.02f;E. float foo = 3.03d;F. float foo = 0x0123;3.下列哪一項(xiàng)敘述是正確的?A. charB. charC. char型字符在 型字符在 型字符在 型字符在Uni codeUni codeUni codeUn

8、i codeb表中的位置范圍是 表中的位置范圍是 表中的位置范圍是 表中的位置范圍是D. char4以下哪兩項(xiàng)是正確的char型變量的聲明?A. char ch = "R"B. char ch = ''0 至 327670 至 655350 至 65536-32768 至 32767beC. char ch = 'ABCD:D. char ch = "ABCD"E. char ch = 'ucafe:F. char ch = 'u10100'5下列程序中哪些【代碼】是錯(cuò)誤的?public class E p

9、ublic static void main(String args) int x = 8;byte b = 127;/b = x; /x = 12L;/long y=8.0;/float z=6.89 ;/6 .對(duì)于 int a = new int3A. a.length 的值是 3。B. a1的值是1。C. a0的值是0。2345【代碼1】【代碼2】【代碼3】【代碼4】【代碼5】F列哪個(gè)敘述是錯(cuò)誤的? bD. aa.length-1的值等于 a2的值。1. C。2. ADF。3. B。4. BE。5.【代碼2】【代碼3】【代碼4】【代碼5】。6. B。三、閱讀或調(diào)試程序1. 屬于操作題,解

10、答略。2. 屬于操作題,解答略。3. 屬于操作題,解答略。4. 下列程序標(biāo)注的【代碼 1】,【代碼2】的輸出結(jié)果是什么?public class E public static void main (String args )Ion g a = 1,2,3,4;Ion g b = 100,200,300,400,500;b = a;System.out.println(” 數(shù)組 b 的長(zhǎng)度:"+b.length); /【代碼 1 】System.out.println("b0="+b0); /【代碼 2】5. 下列程序標(biāo)注的【代碼 1】,【代碼2】的輸出結(jié)果是什么

11、?public class E public static void main(String args) in t a=10,20,30,40,b=1,2,4,5,6,7;b0 = a;b01 = b13;System.out.println(b03); / 【代碼 1 】System.out.println(a1);/【代碼 2】4. 【代碼1】:4。【代碼2】:b0=1。5. 【代碼1】:40?!敬a2】:7四、編寫程序1 .編寫一個(gè)應(yīng)用程序,給出漢字你、我、他在Unicode 表中的位置。2 編寫一個(gè)Java應(yīng)用程序,輸出全部的希臘字母。1. public class E public

12、static void main(String args) System.out.println(int)'你');System.out.println(int)'我');System.out.println(int)'他');2. public class E public static void main (String args ) char cStart=' a ',cEnd=' 3 'for(char c=cStart;c<=cEnd;c+)System.out.print(” "+c);

13、習(xí)題3 (第3章)一、問(wèn)答題1關(guān)系運(yùn)算符的運(yùn)算結(jié)果是怎樣的數(shù)據(jù)類型?2. if語(yǔ)句中的條件表達(dá)式的值是否可以是int型?3. while語(yǔ)句中的條件表達(dá)式的值是什么類型?4. switch語(yǔ)句中必須有 default選項(xiàng)碼?5. 在while語(yǔ)句的循環(huán)體中,執(zhí)行break語(yǔ)句的效果是什么?6. 可以用for語(yǔ)句代替 while語(yǔ)句的作用嗎?1. boolean2. 不可以3. boolean4. 不是必須的5. 結(jié)束while語(yǔ)句的執(zhí)行6. 可以二、選擇題1. 下列哪個(gè)敘述是正確的?aA. 5.0/2+10的結(jié)果是double型數(shù)據(jù)。B. (int)5.8+1.0的結(jié)果是int型數(shù)據(jù)。C. 蘋

14、'+ '果啲結(jié)果是char型數(shù)據(jù)。D. (short)10+'a'的結(jié)果是short型數(shù)據(jù)。2. 用下列哪個(gè)代碼替換程序標(biāo)注的【代碼】會(huì)導(dǎo)致編譯錯(cuò)誤?cA . m->0 B. m+>0 C. m = 0 D. m>100&&true public class E public static void main (String args ) int m=10, n=0;while(【代碼】)n+;3假設(shè)有int x=1;以下哪個(gè)代碼導(dǎo)致“可能損失精度,找到int需要char”這樣的編譯錯(cuò)誤。cA short t=12+'a

15、: B. char c ='a'+1C. char m ='a'+x; D. byte n ='a'+1;1 A。2. Co三、閱讀程序1 下列程序的輸出結(jié)果是什么?public class E public static void main (Stri ng args )char x='你',y='e',z='吃'if(x>'A')y='蘋';z='果';elsey='酸'z='甜:System.out.pri ntln

16、 (x+","+y+","+z);2下列程序的輸出結(jié)果是什么?public class E public static void main (String args ) char c = '0:for(i nt i=1;i<=4;i+) switch(i) case 1: c = 'J'System.out.pri nt(c);case 2: c = 'e'System.out.pri nt(c); break;case 3: c = 'p'System.out.pri nt(c); defa

17、ult: System.out.print("好"); 3. 下列程序的輸出結(jié)果是什么?public class E public static void main (Stri ng args) int x = 1,y = 6;while (y->0) x-;System.out.pri nt("x="+x+",y="+y);x=0,y=5x=-1,y=4x=_2,y=3x=_3,y=2x=-4,y=1x=-5,y=0x=-5,y=-11你,蘋,甜2. Jeep好好3. x=-5,y=-1四、編程序題1. 編寫應(yīng)用程序求1!+2

18、!+10!。2. 編寫一個(gè)應(yīng)用程序求100以內(nèi)的全部素?cái)?shù)。3. 分別用do-while和for循環(huán)計(jì)算1+1/2!+1/3!+1/4! 的前20項(xiàng)和。4. 一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為“完數(shù)”。編寫應(yīng)用程序求1000之內(nèi)的所有完數(shù)。5. 編寫應(yīng)用程序,使用for循環(huán)語(yǔ)句計(jì)算 8+88+888前10項(xiàng)之和。6. 編寫應(yīng)用程序,輸出滿足1+2+3+n<8888的最大正整數(shù)n。1. public class Xiti1 public static void main(String args) double sum=0,a=1;int i=1;while(i<=20) su

19、m=sum+a;i+;a=a*i; System.out.println("sum="+sum);2. public class Xiti2 public static void main(String args) int i,j;for(j=2;j<=100;j+) for(i=2;i<=j/2;i+) if(j%i=O)break;if(i>j/2) System.out.print(” "+j);3. class Xiti3 public static void main(String args) double sum=0,a=1,i=1;

20、do sum=sum+a;i+;a=(1.0/i)*a;while(i<=20);System.out.println(” 使用 do-while 循環(huán)計(jì)算的 sum="+sum); for(sum=0,i=1,a=1;i<=20;i+) a=a*(1.0/i); sum=sum+a;System.out.println(” 使用 for 循環(huán)計(jì)算的 sum="+sum);4. public class Xiti4 public static void main(String args) int sum=0,i,j;for(i=1;i<=1000;i+)

21、for(j=1,sum=0;j<i;j+) if(i%j=0)sum=sum+j;if(sum=i)System.out.println(” 完數(shù):"+i);5. public class Xiti5 public static void main(String args) int m=8,item=m,i=1;long sum=0;for(i=1,sum=0,item=m;i<=10;i+) sum=sum+item;12. this關(guān)鍵字代表什么?this可以出現(xiàn)在類方法中嗎?System.out.println(sum);6. public class Xiti6

22、public static void main(String args) int n=1;long sum=0;while(true) sum=sum+n;n+;if(sum>=8888)break;System.out.println(” 滿足條件的最大整數(shù):"+(n-1);習(xí)題4 (第4章)一、問(wèn)答題1. 面向?qū)ο笳Z(yǔ)言有哪三個(gè)特性?2. 類名應(yīng)當(dāng)遵守怎樣的編程風(fēng)格?3. 變量和方法的名字應(yīng)當(dāng)遵守怎樣的編程風(fēng)格?4. 類體內(nèi)容中聲明成員變量是為了體現(xiàn)對(duì)象的屬性還是行為?5. 類體內(nèi)容中定義的非構(gòu)造方法是為了體現(xiàn)對(duì)象的屬性還是行為? 6. 什么時(shí)候使用構(gòu)造方法?構(gòu)造方法有類型嗎

23、?7. 類中的實(shí)例變量在什么時(shí)候會(huì)被分配內(nèi)存空間?&什么叫方法的重載?構(gòu)造方法可以重載嗎?9. 類中的實(shí)例方法可以操作類變量( static變量)嗎?類方法(static方法)可以操作實(shí)例 變量嗎?可以。不可以。10. 類中的實(shí)例方法可以用類名直接調(diào)用嗎?& 一個(gè)類中可以有多個(gè)方法具有相同的名字,但這些方法的參數(shù)必須不同,即或者是參 數(shù)的個(gè)數(shù)不同,或者是參數(shù)的類型不同。可以。9.10. 不可以。11. 簡(jiǎn)述類變量和實(shí)例變量的區(qū)別。1. 封裝、繼承和多態(tài)。2. 當(dāng)類名由幾個(gè)單詞復(fù)合而成時(shí),每個(gè)單詞的首字母使用大寫。3. 名字的首單詞的首字母使用小寫,如果變量的名字由多個(gè)單詞組成,

24、從第2個(gè)單詞開(kāi) 始的其它單詞的首字母使用大寫。4. 屬性5. 行為6. 用類創(chuàng)建對(duì)象時(shí)。沒(méi)有類型7. 用類創(chuàng)建對(duì)象時(shí)。& 一個(gè)類中可以有多個(gè)方法具有相同的名字,但這些方法的參數(shù)必須不同,即或者是參 數(shù)的個(gè)數(shù)不同,或者是參數(shù)的類型不同??梢浴?. 可以。不可以。10. 不可以。11. 一個(gè)類通過(guò)使用new運(yùn)算符可以創(chuàng)建多個(gè)不同的對(duì)象,不同的對(duì)象的實(shí)例變量將被分 配不同的內(nèi)存空間。所有對(duì)象的類變量都分配給相同的一處內(nèi)存,對(duì)象共享類變量。12. 代表調(diào)用當(dāng)前方法的對(duì)象。不可以。二、選擇題1 .下列哪個(gè)敘述是正確的?bA. Java應(yīng)用程序由若干個(gè)類所構(gòu)成,這些類必須在一個(gè)源文件中。B. Ja

25、va應(yīng)用程序由若干個(gè)類所構(gòu)成,這些類可以在一個(gè)源文件中,也可以分布在若 干個(gè)源文件中,其中必須有一個(gè)源文件含有主類。C. Java源文件必須含有主類。D. Java源文件如果含有主類,主類必須是public類。2. 下列哪個(gè)敘述是正確的?dA. 成員變量的名字不可以和局部變量的相同。B. 方法的參數(shù)的名字可以和方法中聲明的局部變量的名字相同。C. 成員變量沒(méi)有默認(rèn)值。D. 局部變量沒(méi)有默認(rèn)值。3. 對(duì)于下列 Hello類,哪個(gè)敘述是正確的?dA. Hello類有2個(gè)構(gòu)造方法。B. Hello類的int Hello()方法是錯(cuò)誤的方法。C. Hello類沒(méi)有構(gòu)造方法。D. Hello無(wú)法通過(guò)編譯

26、,因?yàn)槠渲械膆ello方法的方法頭是錯(cuò)誤的(沒(méi)有類型)class Hello Hello(int m)int Hello() return 20;hello() 4對(duì)于下列Dog類,哪個(gè)敘述是錯(cuò)誤的?dA. Dog(int m)與Dog(double m)互為重載的構(gòu)造方法。B. int Dog(int m)與void Dog(double m)互為重載的非構(gòu)造方法。C. Dog類只有兩個(gè)構(gòu)造方法,而且沒(méi)有無(wú)參數(shù)的構(gòu)造方法。D. Dog類有3個(gè)構(gòu)造方法。class Dog Dog(int m)Dog(double m)int Dog(int m) return 23;void Dog(doub

27、le m)構(gòu)造方法是一種特殊的方法,與一般的方法不同是:1. 構(gòu)造方法的名字必須與定義他的類名完全相同,沒(méi)有返回類型,甚至連void也沒(méi)有。2. 構(gòu)造方法的調(diào)用是在創(chuàng)建一個(gè)對(duì)象時(shí)使用new操作進(jìn)行的。構(gòu)造方法的作用是初始化對(duì)象。3. 不能被 static、final、synchronized 、abstract 禾口 native 修飾。構(gòu)造方法不能被 子類繼承。5. 下列哪些類聲明是錯(cuò)誤的?cdA) class AB) public class AC) protected class AD) private class A6. 下列A類中【代碼1】【代碼5】哪些是錯(cuò)誤的?1 4class T

28、om private int x = 120;protected int y = 20;int z = 11; private void f() x = 200; System.out.println(x);void g() x = 200; System.out.println(x);public class A public static void main(String args) Tom tom = new Tom(); tom.x = 22; / 【代碼 1】 tom.y = 33; / 【代碼 2】 tom.z = 55; / 【代碼 3 】 tom.f(); /【代碼 4】 to

29、m.g(); / 【代碼 5】7下列 E 類的類體中哪些【代碼】是錯(cuò)誤的。 4class E int x;/ 【代碼 1】long y = x;/ 【代碼 2】public void f(int n) int m;/ 【代碼 3】int t = n+m;/ 【代碼 4 】1. Bo 2. Db 3. Do 4. Db 5. CD 6.【代碼1】【代碼4】。7 .【代碼4】。三、閱讀程序1說(shuō)出下列E類中【代碼1】【代碼3】的輸出結(jié)果。 class Fish int weight = 1;class Lake Fish fish;void setFish(Fish s)fish = s;void

30、foodFish(int m) fish.weight=fish.weight+m;public class E 代碼 1】代碼 2】【代碼 3】public static void main(String args) Fish redFish = new Fish(); System.out.println(redFish.weight); / Lake lake = new Lake(); lake.setFish(redFish); lake.foodFish(120);System.out.println(redFish.weight); / System.out.println(la

31、ke.fish.weight); /2請(qǐng)說(shuō)出 A 類中 System.out.println 的輸出結(jié)果。 class B int x = 100,y = 200; public void setX(int x) x = x;public void setY(int y) this.y = y;public int getXYSum() return x+y;public class A public static void main(String args) B b = new B();b.setX(-100);b.setY(-200);System.out.println("su

32、m="+b.getXYSum();3請(qǐng)說(shuō)出 A 類中 System.out.println 的輸出結(jié)果。class B int n;static int sum=0;void setN(int n) this.n=n;int getSum() for(int i=1;i<=n;i+) sum=sum+i;return sum;public class A public static void main(String args) B b1=new B(),b2=new B();b1.setN(3);b2.setN(5);int s1=b1.getSum();int s2=b2.g

33、etSum();System.out.println(s1+s2);4請(qǐng)說(shuō)出E類中【代碼1】,【代碼2】的輸出結(jié)果n的輸出結(jié)果。 class A double f(int x,double y) return x+y;int f(int x,int y) return x*y;public class E public static void main(String args) A a=new A();System.out.println(a.f(10,10); /【代碼 1】System.out.println(a.f(10,10.0); /【代碼 2】5. 上機(jī)實(shí)習(xí)下列程序,了解可變參數(shù)。

34、public class E public static void main(String args) 給參數(shù)傳值時(shí),實(shí)參的個(gè)數(shù)很靈活f(1,2); f(-1,-2,-3,-4); / f(9,7,6);public static void f(int . x) /x數(shù)for(i nt i=0;i<x .len gth;i+) /x.len gthSystem.out.pri ntln (xi); /xi是可變參數(shù)的代表,代表若干個(gè) int型參是x代表的參數(shù)的個(gè)數(shù)是x代表的第i個(gè)參數(shù)(類似數(shù)組)6類的字節(jié)碼進(jìn)入內(nèi)存時(shí),類中的靜態(tài)塊會(huì)立刻被執(zhí)行。實(shí)習(xí)下列程序,了解靜態(tài)塊。class AAA

35、 我是AAA中的靜態(tài)塊rj;我是最先被執(zhí)行的靜態(tài)塊!");static / 靜態(tài)塊System.out.pri ntl n("public class E static / 靜態(tài)塊System.out.pri ntl n("public static void main(String args) AAA a= new AAA(); /AAA的字節(jié)碼進(jìn)入內(nèi)存System.out.println(”我在了解靜態(tài)(static)塊");1 代碼1】:1,【代碼2】:121,【代碼3】:121。2 sum=-100。3. 27。4 .【代碼1】:100,【代碼2

36、】:20.0。5. 上機(jī)實(shí)習(xí)題目,解答略。6. 上機(jī)實(shí)習(xí)題目,解答略。四、編程題用類描述計(jì)算機(jī)中 CPU的速度和硬盤的容量。要求Java應(yīng)用程序有4個(gè)類,名字分別是PC,CPU和HardDisk和Test,其中Test是主類。PC類與CPU和HardDisk類關(guān)聯(lián)的 UML圖(圖4.33)主類Test的要求 main方法中創(chuàng)建一個(gè) main方法中創(chuàng)建一個(gè)其中,CPU類要求getSpeed()返回speed的值;要求 setSpeed(int m)方法將參數(shù) m的 值賦值給 speed HardDisk 類要求 getAmount()返回 amount 的值,要求 setAmount(int m

37、)方 法將參數(shù) m的值賦值給amount。PC類要求setCUP(CPU c)將參數(shù)c的值賦值給cpu,要 求setHardDisk (HardDisk h)方法將參數(shù) h的值賦值給 HD,要求show()方法能顯示 cpu的 速度和硬盤的容量。CPU對(duì)象cpu, cpu將自己的speed設(shè)置為2200, HardDisk對(duì)象disk,disk將自己的amount設(shè)置為200,main方法中創(chuàng)建一個(gè) PC對(duì)象pc,pc調(diào)用setCUP(CPU c)方法,調(diào)用時(shí)實(shí)參是 cpu, pc調(diào)用setHardDisk (HardDisk h)方法,調(diào)用時(shí)實(shí)參是 disk, pc調(diào)用show()方法。CP

38、Uspeed:int setSpeed(int):void getSpeed():intHardDiskamount:int setAmount(int):void getAmount():int圖 4.33 PC 與 CPU 和 HardDisk 關(guān)聯(lián) UML 圖CPU.javapublic class CPU int speed;int getSpeed() return speed;public void setSpeed(int speed) this.speed = speed;HardDisk.javapublic class HardDisk int amount;int get

39、Amount() return amount; public void setAmount(int amount) this.amount = amount; PC.java public class PC CPU cpu; HardDisk HD; void setCPU(CPU cpu) this.cpu = cpu; void setHardDisk(HardDisk HD) this.HD = HD; void show() System.out.println("CPU 速度 :"+cpu.getSpeed(); System.out.println("

40、 硬盤容量 :"+HD.getAmount(); Test.java public class Test public static void main(String args) CPU cpu = new CPU(); HardDisk HD=new HardDisk(); cpu.setSpeed(2200); HD.setAmount(200); PC pc =new PC(); pc.setCPU(cpu); pc.setHardDisk(HD); pc.show(); 習(xí)題 5(第 5 章)一、問(wèn)答題1子類可以有多個(gè)父類嗎?2 java.lang 包中的 Object 類是

41、所有其他類的祖先類嗎? 3如果子類和父類不在同一個(gè)包中,子類是否繼承父類的友好成員? 4子類怎樣隱藏繼承的成員變量?5子類重寫方法的規(guī)則是怎樣的?重寫方法的目的是什么?6父類的final方法可以被子類重寫嗎?7. 什么類中可以有 abstract方法?&對(duì)象的上轉(zhuǎn)型對(duì)象有怎樣的特點(diǎn)?9一個(gè)類的各個(gè)子類是怎樣體現(xiàn)多態(tài)的?10.面向抽象編程的目的和核心是什么?1.不可以。2 .是。3. 不繼承。4. 聲明與父類同名的成員變量。5 .子類重寫的方法類型和父類的方法的類型一致或者是父類的方法的類型的子類型,重 寫的方法的名字、參數(shù)個(gè)數(shù)、參數(shù)的類型和父類的方法完全相同。重寫方法的目的是隱藏 繼承

42、的方法,子類通過(guò)方法的重寫可以把父類的狀態(tài)和行為改變?yōu)樽陨淼臓顟B(tài)和行為。6. 不可以。7. abstract類。&上轉(zhuǎn)型對(duì)象不能操作子類新增的成員變量,不能調(diào)用子類新增的方法。上轉(zhuǎn)型對(duì)象可 以訪問(wèn)子類繼承或隱藏的成員變量,可以調(diào)用子類繼承的方法或子類重寫的實(shí)例方法。9. 通過(guò)重寫方法。10. 面向抽象編程目的是為了應(yīng)對(duì)用戶需求的變化,核心是讓類中每種可能的變化對(duì)應(yīng)地 交給抽象類的一個(gè)子類類去負(fù)責(zé),從而讓該類的設(shè)計(jì)者不去關(guān)心具體實(shí)現(xiàn)。二、選擇題1. 下列哪個(gè)敘述是正確的?cE. 子類繼承父類的構(gòu)造方法。F. abstract類的子類必須是非abstract類。G. 子類繼承的方法只能操作

43、子類繼承和隱藏的成員變量。H. 子類重寫或新增的方法也能直接操作被子類隱藏的成員變量。2. 下列哪個(gè)敘述是正確的?dA. final類可以有子類。B. abstract類中只可以有 abstract方法。C. abstract類中可以有非 abstract方法,但該方法不可以用final修飾。D. 不可以同時(shí)用final和abstract修飾同一個(gè)方法。E. 允許使用 static修飾abstract方法。用final修飾的類是不允許被繼承的,A錯(cuò)誤abstract類中也可以有普通成員方法,B錯(cuò)誤finalabstract類中的非abstract方法是可以用final修飾的,而 abstrac

44、t方法是不可以被修飾的,C錯(cuò)誤D同上,所以正確不允許使用 static修飾abstract方法,E錯(cuò)誤。3 下列程序中注釋的哪兩個(gè)代碼( A , B, C, D )是錯(cuò)誤的(無(wú)法通過(guò)編譯)?cdclass Father private int money =12;float height;int seeMoney()return money ;/Aclass Son extends Father int height;int lookMoney() int m = seeMoney();Breturn m;class E public static void main(String args)

45、 Son erzi = new Son();erzi.money = 300;/Cerzi.height = 1.78F;D4 假設(shè)C是B的子類,B是A的子類,cat是C類的一個(gè)對(duì)象,bird是B類的一個(gè)對(duì)象,下列哪個(gè)敘述是錯(cuò)誤的?dE. cat instanceof B 的值是 true。F. bird instanceof A 的值是 true。G. cat instanceof A 的值是 true。H. bird instanceof C 的值是 true。5下列程序中注釋的哪個(gè)代碼(A , B , C, D)是錯(cuò)誤的(無(wú)法通過(guò)編譯)?bclass A static int m;sta

46、tic void f()m = 20 ;/Aclass B extends A void f()B m = 222 ;/Cclass E public static void main(String args) A. f();/ D6.下列代碼中標(biāo)注的(A,B,C,D )中,哪一個(gè)是錯(cuò)誤的?babstract class Takecare protected void speakHello() /Apublic abstract static void cry();Bstatic int f() return 0 ;Cabstract float g();D7下列程序中注釋的哪個(gè)代碼( A ,

47、 B , C, D)是錯(cuò)誤的(無(wú)法通過(guò)編譯)?dabstract class A abstract float getFloat ();/Avoid f()B public class B extends A private float m = 1.0f;/Cprivate float getFloat ()/D return m;&將下列哪個(gè)代碼(A,B,C,D)放入程序中標(biāo)注的【代碼】處將導(dǎo)致編譯錯(cuò)誤?bA. public float getNum()return 4.0f;B. public void getNum() C. public void getNum(double d

48、) D. public double getNum(float d)return 4.0d;class A public float getNum() return 3.0f;public class B extends A 【代碼】A. 程序提示編譯錯(cuò)誤(原因是 A 類沒(méi)有不帶參數(shù)的構(gòu)造方法)B. 編譯無(wú)錯(cuò)誤, 【代碼】輸出結(jié)果是0。C. 編譯無(wú)錯(cuò)誤, 【代碼】輸出結(jié)果是1。D. 編譯無(wú)錯(cuò)誤, 【代碼】輸出結(jié)果是2。class A public int i=0; A(int m) i = 1;public class B extends A B(int m) i = 2;public sta

49、tic void main(String args) B b = new B(100); System.out.println(b.i); / 【代碼】1. C。 2. D。 3. CD。 4. D。 5. B。 6. B。 7. D。 8. B。 9. A。三、閱讀程序1 .請(qǐng)說(shuō)出 E 類中【代碼 1 】,【代碼 2】的輸出結(jié)果。 class A double f(double x,double y) return x+y;class B extends A double f(int x,int y) return x*y;public class E public static void

50、main(String args) B b=new B();System.out.println(b.f(3,5);/ 【代碼 1】System.out.println(b.f(3.0,5.0);/ 【代碼 2】2說(shuō)出下列B類中【代碼1】,【代碼2】的輸出結(jié)果。class A public int getNumber(int a) return a+1;class B extends A public int getNumber (int a) return a+100;public static void main (String args) A a =new A();System.out.

51、println(a.getNumber(10); /【代碼 1 a = new B();System.out.println(a.getNumber(10); /【代碼 23請(qǐng)說(shuō)出E類中【代碼1 【代碼4的輸出結(jié)果。class A double f(double x,double y) return x+y;static int g(int n) return n*n;class B extends A double f(double x,double y) double m = super.f(x,y);return m+x*y;static int g(int n) int m = A.g

52、(n);return m+n;public class E public static void main(String args) B b = new B();System.out.println(b.f(10.0,8.0);/【代碼1System.out.println(b.g(3);/【代碼2A a = new B();System.out.println(a.f(10.0,8.0);/【代碼3System.out.println(a.g(3);/【代碼4】4請(qǐng)說(shuō)出E類中【代碼1】【代碼3】的輸出結(jié)果。class A int m;int getM() return m;int seeM(

53、) return m;class B extends A int m ;int getM() return m+100;public class E public static void main(String args) B b = new B();b.m = 20;System.out.println(b.getM(); /【代碼 1A a = b;a.m = -100;/上轉(zhuǎn)型對(duì)象訪問(wèn)的是被隱藏的mSystem.out.println(a.getM(); /【代碼2】上轉(zhuǎn)型對(duì)象調(diào)用的一定是子類重寫的getM()方法System.out.println(b.seeM(); /【代碼3】子類繼承的seeM()方法操作的 m是被子類隱藏的m1.2.3.4.【代碼1:15.0?!敬a2:8.0?!敬a1:1

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論