JAVA考核題-面向?qū)ο筮x擇題答案_第1頁
JAVA考核題-面向?qū)ο筮x擇題答案_第2頁
JAVA考核題-面向?qū)ο筮x擇題答案_第3頁
JAVA考核題-面向?qū)ο筮x擇題答案_第4頁
JAVA考核題-面向?qū)ο筮x擇題答案_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余25頁可下載查看

下載本文檔

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

文檔簡介

1、北潤JAVA考核-面向?qū)ο蟮谝徊糠钟⒄Z測試(每題分,共分)第二部分知識(shí)點(diǎn)測試(分)一、選擇題(每題2分,共110分)1 .下面關(guān)于變量及其作用范圍的陳述哪個(gè)是不對的?(B)A.實(shí)例變量是類的成員變量。B.實(shí)例變量用關(guān)鍵字static聲明。C.在方法中定義的局部變量在該方法被執(zhí)行時(shí)創(chuàng)建。D.局部變量在使用前必須被初始化。2 .下面哪條語句把方法聲明為抽象的公共方法?(B)A.publicabstractmethod();B.publicabstractvoidmethod();C.publicabstractvoidmethod()D.publicvoidmethod()extendsabstr

2、act;3 .若在某一個(gè)類定義中定義有如下的方法:finalvoidaFinalFunction()則該方法屬于(C)。A、本地方法B、靜態(tài)方法C、最終方法D、抽象方法4 .main方法是JavaApplication程序執(zhí)行的入口點(diǎn),關(guān)于main方法的方法頭以下哪項(xiàng)是合法的(B)。A、publicstaticvoidmain()B、publicstaticvoidmain(Stringargs)C、publicstaticintmain(Stringargs)D、publicvoidmain(Stringarg)5 .在Java中,一個(gè)類可同時(shí)定義許多同名的方法,這些方法的形式參數(shù)個(gè)數(shù)、類型

3、或順序各不相同,傳回的值也可以不相同。這種面向?qū)ο蟪绦虻奶匦苑Q為(C)。A、隱藏B、覆蓋C、重載D、Java不支持此特性6 .下列關(guān)于構(gòu)造方法的敘述中,錯(cuò)誤的是(C)A.Java語言規(guī)定構(gòu)造方法名與類名必須相同B. Java語言規(guī)定構(gòu)造方法沒有返回值,但不用void聲明C. Java語言規(guī)定構(gòu)造方法不可以重載D.Java語言規(guī)定構(gòu)造方法只能通過new自動(dòng)調(diào)用7 .關(guān)于被私有訪問控制符private修飾的成員變量,以下說法正確的是(C)A.可以被三種類所引用:該類自身、與它在同一個(gè)包中的其他類、在其他包中的該類的子類8 .可以被兩種類訪問和引用:該類本身、該類的所有子類C.只能被該類自身所訪問和

4、修改D.只能被同一個(gè)包中的類訪問8 .類Testi定義如下:1. publicclassTest12. publicfloataMethod(floata,floatb)3.4. 將以下哪種方法插入行3是不合法的。(B)A、publicfloataMethod(floata,floatb,floatc)B、publicfloataMethod(floatc,floatdC、publicintaMethod(inta,intb)D、privatefloataMethod(inta,intb,intc)9 .閱讀以下代碼:publicclassfoopublicstaticvoidmain(Str

5、ingargs)Strings;System.out.println("s="+s);輸出結(jié)果應(yīng)該是:(C)A.代碼得到編譯,并輸出“s=”B.代碼得到編譯,并輸出“s=null”C.由于Strings沒有初始化,代碼不能編譯通過D.代碼得到編譯,但捕獲NullPointException異常解析:局部變量必須顯示的初始化。引用類型變量初始化時(shí)如果沒有具體對象引用,可以初始化為null。10 .下述概念中不屬于面向?qū)ο筮@種編程范疇的是(D)。A.對象、消息B.繼承、多態(tài)C.類、封裝D.過程調(diào)用11 .編譯并運(yùn)行以下程序,以下描述哪個(gè)選項(xiàng)是正確的(A)。1. classA2.

6、 protectedStringtoString()3. returnsuper.toString();4. A、行2出錯(cuò),不能成功編譯B、編譯通過但運(yùn)行時(shí)出錯(cuò)C、編譯通過運(yùn)行無異常D、不能成功編譯,行3出錯(cuò)解析:方法重寫時(shí)沒有滿足訪問權(quán)限控制符要比父類的大或者相同。12 .假設(shè)Foo類有如下定義,設(shè)f是Foo類的一個(gè)實(shí)例,下列語句調(diào)用哪個(gè)是錯(cuò)誤的?(A)publicclassFoointi;staticStrings;voidimethod()staticvoidsmethod()A、Foo.imethod();B、f.imethod();C、System.out.println(f.i);

7、D、Foo.smethod()13 .以下哪個(gè)接口的定義是正確的?(D)A、interfaceAvoidprint();B、abstractinterfaceAvoidprint();C、abstractinterfaceAextendsI1,I2I1、I2為已定義的接口abstractvoidprint();D、interfaceAvoidprint();解析:接口定義時(shí)語法規(guī)定上是不需要加abstract的,因?yàn)榻涌诒旧砭褪莂bstract的,java編譯器在編譯接口時(shí)會(huì)自動(dòng)加上abstract。但是我們顯示的加上abstract是不會(huì)出現(xiàn)問題,不建議加。此處選項(xiàng)B和C可以認(rèn)為不正確。14

8、 .關(guān)于以下程序段,正確的說法是(C)1. Strings1="a”+“b”;2. Strings2=newString(s1);3. if(s1=s2)4. System.out.println(iss=cceeded");5. if(s1.equals(s2)6. System.out.println(".equals。issucceeded");A.彳T4與彳T6都將執(zhí)行B.行4執(zhí)行,行6不執(zhí)行C.彳T6執(zhí)行,行4不執(zhí)行D.行4、行6都不執(zhí)行15 .下面程序運(yùn)行結(jié)果為:(D,如果輸出count則為A)publicclasstest3publicst

9、aticvoidmain(Stringargs)intcount=0;for(inti=0;i<=100;i+)count+=count+;A0B7C編譯有錯(cuò)誤D其他答案16 .下面哪個(gè)函數(shù)是publicvoidaMethod()的重載函數(shù)?(D)A、voidaMethod().B、publicintaMethod()C、publicvoidaMethod().D、publicintaMethod(intm)17 .下面關(guān)于繼承的哪些敘述是正確的?(D)A.在java中允許多繼承。B.在java中一個(gè)類只能實(shí)現(xiàn)一個(gè)接口。C.在java中一個(gè)類不能同時(shí)繼承一個(gè)類和實(shí)現(xiàn)一個(gè)接口。D.java

10、的單一繼承使代碼更可靠。18 .運(yùn)行下面程序段的結(jié)果是:(D)。publicclassMyMainpublicstaticvoidmain(Stringargs)System.out.println(HelloJava");A.正常輸出HelloJavaB.編譯時(shí)出錯(cuò)C.運(yùn)行時(shí)出錯(cuò)D.以上答案都不對19 .類與對象的關(guān)系是(A)。A.類是對象的抽象B.類是對象的具體實(shí)例C.對象是類的抽象D.對象是類的子類20 .下列關(guān)于修飾符混用的說法,錯(cuò)誤的是(BD)。A. abstract不能與final并列修飾同一個(gè)類B. abstract類中不可以有private的成員C. abstract

11、方法必須在abstract類中D. static方法中能處理非static的屬性解析:abstract類中可以有private的成員,只是它的private成員不能被繼承,所以在abstract類中定義private成員沒有意義。21 .編譯并運(yùn)行下述程序段的結(jié)果是:(B)。publicclassTestpublicstaticvoidmain(Stringargv)intcount=newint4;System.out.println(count4);)A.編譯時(shí)錯(cuò)誤B.運(yùn)行時(shí)錯(cuò)誤C.輸出0D.輸出null22 .下面是有關(guān)子類繼承父類構(gòu)造函數(shù)的描述,其中正確的是(CD)。A.創(chuàng)建子類的對象

12、時(shí),先調(diào)用子類自己的構(gòu)造函數(shù),然后調(diào)用父類的構(gòu)造函數(shù)。B.子類無條件地繼承父類不含參數(shù)的構(gòu)造函數(shù)。C.子類必須通過super關(guān)鍵字調(diào)用父類的構(gòu)造函數(shù)。D.子類無法繼承父類的構(gòu)造函數(shù)。解析:子類無法繼承父類的構(gòu)造器,但有時(shí)候可以使用super調(diào)用父類構(gòu)造器中的初始化代碼。在繼承關(guān)系中一定要確保構(gòu)造器的上溯鏈不得中斷,否則會(huì)出錯(cuò)。23 .下列類的定義中,錯(cuò)誤的是(B)。A.classx.B. publicxextendsy.C. publicclassxextendsy.D. classxextendsyimplementsy1.24 .A派生出子類B,B派生出子類C,并且在Java源代碼中有如下

13、聲明:1.Aa0=newA();2.Aa1=newB();3.Aa2=newC();問以下哪個(gè)說法是正確的?(D)A.只有第1行能通過編譯B.第1、2行能通過編譯,但第3行編譯出錯(cuò)C.第1、2、3行能通過編譯,但第2、3行運(yùn)行時(shí)出錯(cuò)D.第1行、第2行和第3行的聲明都是正確的25 .運(yùn)行下列程序的結(jié)果是(C)abstractclassMineBaseabstractvoidamethod();staticinti;publicclassMineextendsMineBasepublicstaticvoidmain(Stringargv口)int口ar=newint5;for(i=0;i<a

14、r.length;i+)System.out.println(ari);A.打印5個(gè)0C.編譯出錯(cuò),Mine應(yīng)聲明為abstractB.編譯出錯(cuò),數(shù)組ar口必須初始化D.出現(xiàn)IndexOutOfBoundes的例外26 .編譯并運(yùn)行以下程序段的結(jié)果是:(A)publicclassMyClassfinalstaticinti;MyClass()i=0;publicstaticvoidmain(Stringargs)System.out.println(i);A.編譯出錯(cuò)B.nullC.1D.0初始解析:final修飾的成員變量(靜態(tài)成員原理和實(shí)例成員變量)必須顯示初始化。靜態(tài)成員變量可以在聲明時(shí)

15、或靜態(tài)初始化代碼塊顯示初始化;實(shí)例成員變量可以在聲明時(shí)、化代碼塊或構(gòu)造器中顯示初始化。27 .下面方法中的返回類型Type”應(yīng)該是彳f么?(A)publicclassReturnItreturnTypemethodA(bytex,doubley)return(short)x/y*2;)A.doubleB.intC.byteD.short28 .下面哪個(gè)修飾符修飾的變量是所有同一個(gè)類生成的對象共享的?(C)ApublicB>privateCstaticDfinal29 .下面關(guān)于java中類的說法哪個(gè)是不正確的?(AC)A.類體中只能有變量定義和成員方法的定義,不能有其他語句。B.構(gòu)造函數(shù)

16、是類中的特殊方法。C.類一定要聲明為public的,才可以執(zhí)行。D.一個(gè)java文件中可以有多個(gè)class定義。30 .下列哪個(gè)類聲明是正確的?(D)A.abstractfinalclassH1B. abstractprivatemove()C. protectedprivatenumber;D. publicabstractclassCar31 .方法重載是指(A)A.兩個(gè)或兩個(gè)以上的方法取相同的方法名,但形參的個(gè)數(shù)或類型不同B.兩個(gè)以上的方法取相同的名字和具有相同的參數(shù)個(gè)數(shù),但形參的類型可以不同C.兩個(gè)以上的方法名字不同,但形參的個(gè)數(shù)或類型相同D.兩個(gè)以上的方法取相同的方法名,并且方法的返

17、回類型相同32 .指出下列程序運(yùn)行的結(jié)果(B)publicclassExampleStringstr=newString("good");charch='a','b','c');publicstaticvoidmain(Stringargs)Exampleex=newExample();ex.change(ex.str,ex.ch);System.out.print(ex.str+"and");Sytem.out.print(ex.ch);)publicvoidchange(Stringstr,charch

18、)str="testok"ch0='g')A.goodandabcB.goodandgbcC.testokandabcD.testokandgbc33 .下列哪些語句關(guān)于內(nèi)存回收的說明是正確的?(B)A.程序員必須創(chuàng)建一個(gè)線程來釋放內(nèi)存B.內(nèi)存回收程序負(fù)責(zé)釋放無用內(nèi)存C.內(nèi)存回收程序允許程序員直接釋放內(nèi)存D.內(nèi)存回收程序可以在指定的時(shí)間釋放內(nèi)存對象34 .MAX_LENGTHint型public成員變量,變量值保持為常量100,用簡短語句定義這個(gè)變量。(CD)ApublicintMAX_LENGTH=100;BfinalintMAX_LENGTH=100;C

19、finalpublicintMAX_LENGTH=100;DpublicfinalintMAX_LENGTH=100;35 .給出下面代碼:1) classParent2privateStringname;3publicParent()45) publicclassChildextendsParent6privateStringdepartment;7publicChild()8publicStringgetValue()returnname;9publicstaticvoidmain(Stringarg)10Parentp=newParent();1112那些行將引起錯(cuò)誤?(D)A、第3行已

20、第6行C、第7行D、第8行36 .類Teacher和Student是類Person的子類;Personp;Teachert;Students;p,tandsareallnon-null.if(tinstanceofPerson)s=(Student)t;最后一句語句的結(jié)果是:(B)A將構(gòu)造一個(gè)Student對象;B、表達(dá)式是合法的;C表達(dá)式是錯(cuò)誤的;D編譯時(shí)正確,但運(yùn)行時(shí)錯(cuò)誤。解析:考查instanceof和繼承中的強(qiáng)制轉(zhuǎn)換。tinstanceofPerson表達(dá)式是正確的。s=(Student)t;這句轉(zhuǎn)換編譯是錯(cuò)誤的。37 .給出下面代碼段1) publicclassTest2) intm

21、,n;3) publicTest()4) publicTest(inta)m=a;5) publicstaticvoidmain(Stringarg)6) Testt1,t2;7) intj,k;8) j=0;k=0;9) t1=newTest();10) t2=newTest(j,k);11) 12) )哪行將引起一個(gè)編譯時(shí)錯(cuò)誤?(D)A、line3日line5C、line6D、line1038 .對于下列代碼:1) classPerson2) publicvoidprintValue(inti,intj)/.3) publicvoidprintValue(inti)/4) 5) publi

22、cclassTeacherextendsPerson6) publicvoidprintValue()7) publicvoidprintValue(inti)/.8) publicstaticvoidmain(Stringargs)9) Persont=newTeacher();10) t.printValue(10);11) 第10行語句將調(diào)用哪行語句?(D)Aline2日line3C、line6D、line739 .System類在哪個(gè)包中?(D)Ajava.utilB、java.ioCjava.awtD、java.lang40 .對于下列代碼:publicclassParentpubl

23、icintaddValue(inta,intb)ints;s=a+b;returns;classChildextendsParent下述哪些方法可以加入類Child?(CD)A、 intaddValue(inta,intb)/dosomething.B、 publicvoidaddValue(inta,intb)/dosomething.C、publicintaddValue(inta)/dosomething.D>publicintaddValue(inta,intb)throwsMyException/dosomething.D選項(xiàng)異常更解析:A選項(xiàng)不符合一大;B選項(xiàng)返回值類型不匹配

24、;C選項(xiàng)為自己的方法;明確。41 .看下面一段程序:classAclassvoidgo()System.out.println("Aclass");publicclassBclassextendsAclassvoidgoSystem.out.println("Bclass");publicstaticvoidmain(Stringargs)Aclassa=newAclass();Aclassa1=newBclass();a.go();a1.go();(C)B、BclassBclassD、BclassAclass以上程序運(yùn)行結(jié)果是:A、AclassAcla

25、ssCAclassBclass42 .運(yùn)行下列程序,會(huì)產(chǎn)生什么結(jié)果:(B)classOuter1privateinta;voidfoo(doubled,finalfloatf)Strings;finalbooleanb;classInnervoidmethodInner()System.out.println("intheInner");publicstaticvoidmain(Stringargs口)Outer1me=newOuter1();me.foo(123,123);System.out.println("outer");A、intheInner

26、outerRouterCintheInner0編譯不通過43 .下面哪個(gè)修飾符修飾的方法只能被本類中的其他方法使用(C)AprotectedB>staticCprivateD>public44 .下面程序運(yùn)行后的輸出結(jié)果為(C)classAstaticinty=3;voidshowy()System.out.println("y="+y);classtestApublicstaticvoidmain(Stringaaa口)Aa1=newA();A.y+=1;a1.y+;a1.showy();)輸出結(jié)果選擇:A、y=3;B>y=4;C、y=5;D、程序運(yùn)行出

27、錯(cuò)45 .下面關(guān)于構(gòu)造函數(shù)的說法不正確的是(B)A、構(gòu)造函數(shù)也屬于類的方法,用于創(chuàng)建對象的時(shí)候給成員變量賦值。日構(gòu)造函數(shù)不可以重載。C構(gòu)造函數(shù)沒有返回值。D構(gòu)造函數(shù)名稱一定要和類名相同。46 .給出如下代碼:classTestprivateintm;publicstaticvoidfun()/somecode.)如何使成員變量m被函數(shù)fun()直接訪問?(C)A、將privateintmB、將privateintmC、將privateintmD、將privateintm改為protectedintm改為publicintm改為staticintm改為intmAB作為47 .為AB類的一個(gè)無形式

28、參數(shù)無返回值的方法method書寫方法頭,使得使用類名前綴就可以調(diào)用它,該方法頭的形式為(A)A. staticvoidmethod()B. publicvoidmethod()C. finalvoidmethod()D. abstractvoidmethod()48 .如果類中的成員變量可以被同一包訪問,則使用如下哪個(gè)約束符?(D)A、privateB、publicC、protectedD、nomodifier49 .構(gòu)造方法何時(shí)被調(diào)用(B)A.類定義時(shí)B.創(chuàng)建對象時(shí)C.調(diào)用對象方法時(shí)D.使用對象的變量時(shí)50 .如果任何包中的子類都能訪問超類中的成員,那么應(yīng)使用哪個(gè)限定詞(C)A.publi

29、cB.privateC.protectedD.transient51 .Java變量中,以下不屬于復(fù)合類型的數(shù)據(jù)類型是(B)A.類B.字符型C.數(shù)組型D.接口52 .對象使用時(shí),下面描述錯(cuò)誤的是(B)A.通過運(yùn)算符調(diào)用成員變量和方法B.通過成員變量的訪問權(quán)限設(shè)定限制自身對這些變量方法的調(diào)用C.將一個(gè)對象申明為類的成員時(shí),必須在使用前為其分配內(nèi)存D.在方法中使用對象作為參數(shù)時(shí),采用引用調(diào)用(也解釋的通,但一定要了解實(shí)質(zhì)為值調(diào)用)53 .Java編程所必須的默認(rèn)引用包為(B)A.java.sys包B.java.lang包C.java.new包D.以上都不是54 .定義一個(gè)類名為"MyCl

30、ass.java”的類,并且該類可被一個(gè)工程中的所有類訪問,那么該類的正確聲明應(yīng)為:(C)A.privateclassMyClassextendsObjectB.classMyClassextendsObjectC.publicclassMyClassD.privateclassMyClassextendsObject55.內(nèi)部類是在一個(gè)類內(nèi)嵌套定義的類。其特點(diǎn)描述錯(cuò)誤的是(A)A.只能在定義它的類或程序段中或表達(dá)式內(nèi)匿名使用,外部使用時(shí)必須給出類的全名B.可以使用它所在類的靜態(tài)成員變量或?qū)嵗蓡T變量,但不可以使用所在類中的局部變量(后半句可對可錯(cuò),看怎么理解)C.可以作為其它類的成員,而且可

31、訪問它所在類的成員D.除static內(nèi)部類外,不能在類內(nèi)聲明static成員二、填空題(每空0.5分,共26.5分)1、在類聲明中提供類標(biāo)志的關(guān)鍵字是class。2、當(dāng)一個(gè)方法中有多個(gè)參數(shù)時(shí),參數(shù)之間是用英文逗號(hào)隔開。3、在Java中,使用變量遵守先聲明后使用(先定義后使用)的原則。4、比較兩個(gè)字符串是否相同采用equals()方法。5、抽象方法是一種僅有方法頭,沒有具體方法體和操作實(shí)現(xiàn)的方法,該方法必須在抽象類之中定義。6、包定義時(shí),需使用關(guān)鍵字package來實(shí)現(xiàn)。創(chuàng)建一個(gè)名為MyPackage的包的語句是packageMyPackage;。要使用包中的類,必須用關(guān)鍵字import導(dǎo)入這些

32、類所在的包。當(dāng)要引用包中所有的類時(shí),類名可以用通配符二號(hào)代替。7、對象是由一組屬性和對這組屬性進(jìn)行操作的一組服務(wù)組成的。對象是指具體的事物,而類是指一類具有某種共性的事物。由類來確定具體對象的過程稱為實(shí)例化。8、對一類對象的抽象則是類,而類的實(shí)例化結(jié)果是對象。一個(gè)類是由類聲明和類體兩部分組成。類修飾符有3種,它們分別是public、abstract和final。8、抽象類不能被實(shí)例化,它不具備實(shí)際功能,只用于衍生子類。抽象方法是只有方法聲明,沒有代碼實(shí)現(xiàn)的空方法。9、當(dāng)一個(gè)類的類修飾符為final時(shí),說明該類不能被繼承,即不能有子類。10、Java用extends關(guān)鍵字指明繼承關(guān)系。一個(gè)類要從

33、另一個(gè)類繼承變量和方法,必須使用關(guān)鍵字extends。Java程序在extends之后只能有一個(gè)父類,即extends只能實(shí)現(xiàn)單繼承。在Java中只能實(shí)現(xiàn)單繼承(Java不支持多重繼承,但可通過接口實(shí)現(xiàn)多重繼承。11、要在類聲明中實(shí)現(xiàn)接口,需使用關(guān)鍵字implements。一個(gè)類可實(shí)現(xiàn)多個(gè)接口,各接口名是以英文逗號(hào)分隔。12、在Java中,變量分為成員變量和局部變量。在類體中聲明的變量稱為成員變量。在方法中聲明的變量稱為局部變量。成員變量在整個(gè)類體中有效,而局部變量只在定義它的方法內(nèi)有效。如果局部變量名與成員變量名相同,則成員變量被屏蔽。13、在Java程序中,使用關(guān)鍵字this來引用當(dāng)前對象

34、。Java中通過關(guān)鍵字super來實(shí)現(xiàn)對父類成員的訪問。14、一個(gè)方法的定義是有方法聲明和方法體兩部分組成。方法聲明包括方法名、返回類型和形式參數(shù),一個(gè)方法的標(biāo)志是圓括號(hào)。15、構(gòu)造方法的方法名要求與類名相同,而且無返回值。構(gòu)造方法只能通過new運(yùn)算符調(diào)用,用戶不能直接調(diào)用。16、方法重載是指多個(gè)方法享有相同的名字,但這些方法的參數(shù)必須不同,或者是參數(shù)的個(gè)數(shù)不同,或者是參數(shù)類型不同。17、一個(gè)對象的生命周期包括3個(gè)階段:創(chuàng)建、使用和釋放(消亡)。18、對象通過使用運(yùn)算符實(shí)現(xiàn)對自己的變量訪問。19、面向?qū)ο蟮?個(gè)特性是:封裝性、繼承性和多態(tài)性。在Java中,通過對象的封裝,實(shí)現(xiàn)了模塊化和信息隱藏

35、。20、兩個(gè)方法具有相同的名字,相同的參數(shù)表和相同的返回類型,只是函數(shù)體不同,則稱為重寫。21、Java中成員方法可分成兩種:類方法和實(shí)例方法。用關(guān)鍵字static修飾的方法就稱為類方法。實(shí)例方法可對當(dāng)前對象的實(shí)例變量進(jìn)行操作,也可對類變量進(jìn)行操作。實(shí)例方法不但可以訪問實(shí)例變量,也可以訪問類變量。類方法不能訪問實(shí)例變量,只能訪問類變量。22、在Java中,用關(guān)鍵字abstract來修飾一個(gè)類,則該類為抽象類。若某個(gè)類包含了抽象方法,則該類必須被定義為抽象類。23、接口的定義,需使用關(guān)鍵字interface來聲明。接口中沒有什么實(shí)例方法,所有的成員方法都是publicabstract方法。24、

36、聲明父類時(shí),需使用關(guān)鍵字extends來實(shí)現(xiàn)。由于Java的繼承性,所以子類的成員數(shù)目比父類的成員數(shù)目多。三、簡答題(每題5分,共60分)第一步:理解考核知識(shí)點(diǎn)和考核的目的。第二步:背下來,記憶清晰準(zhǔn)確。第三步:能把知識(shí)點(diǎn)用自己的話準(zhǔn)確的描述出來。您的未來就是我們的未來1、super()與this()的區(qū)別?解答:this為當(dāng)前類的對象的引用,所有資源都可以訪問。super為父類對象的引用,在子類訪問父類的成員和行為時(shí)使用,必須受類繼承規(guī)則的約束。在構(gòu)造函數(shù)中,如果第一行沒有寫super(),編譯器會(huì)自動(dòng)插入。但是如果父類沒有不帶參數(shù)的構(gòu)造函數(shù),或這個(gè)函數(shù)被私有化了(用private修飾)。此

37、時(shí)你必須加入對父類的實(shí)例化構(gòu)造。而this就沒有這個(gè)要求,因?yàn)樗旧砭瓦M(jìn)行實(shí)例化的構(gòu)造。而在方法中super和this使用的方法就差不多了。只不過super要考慮是否能訪問其父類的資源。2、請列舉Java語言中的權(quán)限訪問修飾符,并說明每種權(quán)限的含義。解答:正確使用權(quán)限訪問修飾符,能夠有效控制類以及類成員的安全性,Java語言中有四種訪問修飾符,包括public、同包、protected以及private,一般情況下,應(yīng)用中的類多是public權(quán)限,屬性多是private權(quán)限,方法多是public權(quán)限。參考答案:Java語言中有四種權(quán)限訪問修飾符,即public、protected、同包以及pr

38、ivate。public表示公共權(quán)限,即任何包中都可以訪問;protected表示受保護(hù)權(quán)限,即同包中可以訪問,同包中的子類可以訪問:同包權(quán)限是默認(rèn)權(quán)限,即不顯示指明權(quán)限修飾符的時(shí)候就是同包權(quán)限,表示只有同包中可以訪問;private是私有權(quán)限,表示只能在本類中訪問。3、java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?解答:靜態(tài)的多態(tài):方法名相同,參數(shù)個(gè)數(shù)或類型不相同。(overloading)動(dòng)態(tài)的多態(tài):子類覆蓋父類的方法,將子類的實(shí)例傳與父類的引用,調(diào)用的是子類的方法;實(shí)現(xiàn)接口的實(shí)例傳與接口的引用,調(diào)用的實(shí)現(xiàn)類的方法。4、abstractclass和interface的區(qū)另U。解答:(1)抽象類通過ext

39、ends繼承,只能繼承一個(gè)抽象類;接口通過implements使用,可以實(shí)現(xiàn)多個(gè)接口。(2)抽象類可以有部分實(shí)現(xiàn),抽象類和接口都不能創(chuàng)建實(shí)例。聲明方法的存在而不去實(shí)現(xiàn)它的類被叫做抽象類(abstractclass),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類,并為該類聲明方法,但不能在該類中實(shí)現(xiàn)該類的情況。不能創(chuàng)建abstract類的實(shí)例。然而可以創(chuàng)建一個(gè)變量,其類型是一個(gè)抽象類,并讓它指向具體子類的一個(gè)實(shí)例。不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。Abstract類的子類為它們父類中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類為。取而代之,在子類中實(shí)現(xiàn)該方法。知道其行為的其它類可以在類中實(shí)現(xiàn)這些方法。接口

40、(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個(gè)有程序體。接口只可以定義staticfinal成員變量。接口的實(shí)現(xiàn)與子類相似,除了該實(shí)現(xiàn)類不能從接口定義中繼承行為。當(dāng)類實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。然后,它可以在實(shí)現(xiàn)了該接口的類的任何對象上調(diào)用接口的方法。由于有抽象類,它允許使用接口名作為引用變量的類型。通常的動(dòng)態(tài)聯(lián)編將生效。引用可以轉(zhuǎn)換到接口類型或從接口類型轉(zhuǎn)換,instanceof運(yùn)算符可以用來決定某對象的類是否實(shí)現(xiàn)了接口。5、靜態(tài)變量和實(shí)例變量的區(qū)別?是否可以從一個(gè)s

41、tatic方法內(nèi)部發(fā)出對非static方法的調(diào)用并說明理由?解答:(1)聲明時(shí)靜態(tài)變量用static修飾,靜態(tài)變量屬于整個(gè)類,被該類的所用實(shí)例對象所共有。實(shí)例變量屬于該類的某個(gè)對象,擁有自己的特征。(2)靜態(tài)變量在類加載初始化的時(shí)候分配內(nèi)存并初始化,實(shí)例變量在由該類實(shí)例化對象時(shí)進(jìn)行分配內(nèi)存并初始化。(3)調(diào)用方法不同。靜態(tài)方法可以調(diào)用靜態(tài)變量,不可調(diào)用實(shí)例變量。實(shí)例方法可以調(diào)用靜態(tài)變量、實(shí)例變量不可以從一個(gè)static方法內(nèi)部發(fā)出對非static方法的調(diào)用,因?yàn)閟tatic方法屬于整個(gè)類,實(shí)例方法得由該類的某個(gè)對象來調(diào)用。當(dāng)調(diào)用包含非static方法的static方法時(shí),該類不確定是否存在實(shí)例

42、化對象,所以在static方法內(nèi)調(diào)用非static方法時(shí)將出現(xiàn)錯(cuò)誤。鑒于此道理不可以,編譯階段就會(huì)提示該調(diào)用的錯(cuò)誤。不可以,如果其中包含對象的method。,不能保證該對象初始化.6、說說你說知道的設(shè)計(jì)模式。解答:單例模式、工廠模式和命令模式。7、AnonymousInnerClass(匿名內(nèi)部類)是否可以extends(繼承)其它類,是否可以implements(實(shí)現(xiàn))interface(接口)?、解答:匿名內(nèi)部類可以繼承其他類或完成其他接口。8、StaticNestedClass和InnerClass的不同,說得越多越好。解答:(1)StaticNestedClass是被聲明為靜態(tài)(sta

43、tic)的內(nèi)部類,它可以不依賴于外部類實(shí)例被實(shí)例化。而通常的內(nèi)部類需要在外部類實(shí)例化后才能實(shí)例化。Static內(nèi)部類可以包含static成員;普通內(nèi)部類不可以。9、什么是方法重載(overload)?什么是方法的重寫(Override)?Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?解答:方法重載:如果在一個(gè)類中定義了多個(gè)同名的、相同返回值類型的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型(不同的形參列表),則稱為方法的重載(Overloading)。方法重寫:如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫(Overrid

44、ing)。子類的對象使用這個(gè)方法時(shí),將調(diào)用子類中的定義,對它而言,父類中的定義如同被"屏蔽”了。區(qū)別:方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。Overloaded的方法是可以改變返回值的類型和權(quán)限修飾符。如果父類定義方法A,子類要重寫方法A則子類不能使用其它返回類型,必須使用父類一致的返回類型或比父類返回類型小。另外解析重載:如果一個(gè)類的某個(gè)行為,會(huì)有不同的算法和邏輯,例如,Math類的計(jì)算絕對值的方法,既可以計(jì)算int類型數(shù)值

45、的絕對值,也可以計(jì)算double類型數(shù)值的絕對值。這種情況下,每種類型都定義一個(gè)不同的方法名,如abInt、absDouble,那么類的可讀性就較差,使用時(shí),必須熟悉處理每種類型參數(shù)所對應(yīng)的方法名。然而,如果使用同一個(gè)方法名,而使用不同的形式參數(shù)來區(qū)別這些方法,那么就具有很好的可讀性,如abs(inti)、abs(doubled)等??勺x性強(qiáng)的代碼是企業(yè)對開發(fā)人員的基本要求,方法重載能夠使得代碼有很好的可讀性。方法重載指的是在一個(gè)類中可以聲明多個(gè)相同名字的方法,而方法的形式參數(shù)有區(qū)別。調(diào)用這些同名的方法時(shí),JVM會(huì)根據(jù)實(shí)際參數(shù)的不同綁定到不同的方法。10、構(gòu)造器Constructor是否可被o

46、verride?解答:構(gòu)造器Constructor不能被繼承,因此不能重寫Override,但可以被重載Overload。11、是否可以繼承String類,并說明理由?String類是一個(gè)“不可變類”,請解釋“不可變類”的含義。解答:不可以,因?yàn)镾tring類是final類故不可以繼承。解析不可變類:String類是一個(gè)不可變類,即immutable類。所謂不可變,意思是當(dāng)一個(gè)字符串被初始化后,它的值就不會(huì)被改變。例如,Strings=newString("hello")為將初始化一個(gè)值為hello的字符串,如果調(diào)用s.toUpperCase()看起來是把hello變?yōu)榇髮?/p>

47、的HELLO然而事實(shí)上并不會(huì)把已有的hello變?yōu)镠ELLQ而是在新的空間初始化一個(gè)HELLO字符串。也正因?yàn)橛羞@種不可變性,所以才能支持“字符串實(shí)例池”的使用。參考答案:所謂的不可變類,就是當(dāng)字符串初始化后,就不能夠被改變。12、請說明Java語言中的值傳遞規(guī)則。當(dāng)一個(gè)對象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞?第一問解析:值傳遞時(shí)編寫應(yīng)用時(shí)不可避免的操作。例如某方法聲明形式是publicvoidf(intx),寫方法是,必須為其傳遞一個(gè)int類型的實(shí)際參數(shù),如f(10)。又如publicvoidg(Employee)。

48、那么使用該方法時(shí),必須為其傳遞一個(gè)Employee類型的實(shí)際參數(shù),例如g(newEmployee。)。所以,對于初級(jí)程序員來說,了解Java語言的值傳遞規(guī)則非常重要。Java語言是本類型傳遞的值,例如f(10),僅僅把10復(fù)制給形式參數(shù)x,是值的拷貝。而引用類的傳遞時(shí)引用,即虛地址,例如g(newEmployee。)是把實(shí)際參數(shù)的虛地址傳遞給形式參數(shù)e,也就是說實(shí)際參數(shù)和形式參數(shù)的虛地址相同,物理上是同一個(gè)對象。第一問解答:基本數(shù)據(jù)類型傳遞的是值,引用類型傳遞的是引用,即虛地址。第二問解答:是值傳遞。Java編程語言只有值傳遞參數(shù)。當(dāng)一個(gè)對象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí),參數(shù)的值就是對該對

49、象的引用。對象的內(nèi)容可以在被調(diào)用的方法中改變,但對象的引用是永遠(yuǎn)不會(huì)改變的。四、程序題(每題5分,共25分)1、補(bǔ)足代碼定義一個(gè)抽象類AbstractTest,其中有一個(gè)公共的抽象方法printMsg()。然后定義此抽象類的一個(gè)子類DefaultTest,包括的成員變量有姓名,學(xué)號(hào),分?jǐn)?shù),且此類中包括二個(gè)構(gòu)造方法。abstractclassAbstractTest(1)(2)Stringname;Stringid;intscore;/接收三個(gè)參數(shù)的構(gòu)造方法(3)/接收姓名和學(xué)號(hào)二個(gè)參數(shù)的構(gòu)造方法(4)/實(shí)現(xiàn)抽象方法,方法體為打印出學(xué)生的姓名與成績(5)答案:abstractclassAbstr

50、actTest/抽象方法定義publicabstractvoidprintMsg();)publicclassDefaultTestextendsAbstractTestStringname;Stringid;intscore;/*接收三個(gè)參數(shù)的構(gòu)造方法*/publicDefaultTest(Stringname,Stringid,intscore)=name;this.id=id;/*this.score=score;接收姓名和學(xué)號(hào)兩個(gè)參數(shù)的構(gòu)造方法*/publicDefaultTest(Stringname,Stringid)=name;/*this.i

51、d=id;實(shí)現(xiàn)抽象方法,方法體為打印出學(xué)生的姓名與成績*/publicvoidprintMsg()System.out.println("學(xué)生"++"的成績?yōu)椋?quot;+this.score);2、補(bǔ)足代碼定義接口Student,該接口中有一個(gè)無參、無返回值的方法prtMsg;定義類College,包括的私有屬性有id和name包括一個(gè)接收學(xué)生學(xué)號(hào)和姓名的構(gòu)造方法,并且實(shí)現(xiàn)Student接口。interfaceStudent(1)(2) /College類的聲明,實(shí)現(xiàn)Student接口(3) /定義私有成員變量id和name,類型自定(4)/

52、構(gòu)造方法聲明和定義,接收二個(gè)參數(shù)(5)/實(shí)現(xiàn)prtMsg方法的聲明(/prtMsg的方法體System.out.println(id+name);)答案:interfaceStudentvoidprtMst();)publicclassCollegeimplementsStudent/定義私有成員變量id和name,類型自定privateStringname;privateStringid;/* 構(gòu)造方法聲明和定義,接收二個(gè)參數(shù)* /publicCollege(Stringname,Stringid)=name;this.id=id;)/* 實(shí)現(xiàn)prtMsg方法的聲明* /publicvoidprtMst()/prtMsg的方法體System.out.println(id+name);)3、改正下面程序段中的錯(cuò)誤(共5處)publicclassStudentStringid;Stringname;intsalary;publicvoidTest(Stringid,Stringname,intsalary)/1:意圖為該方法為構(gòu)造方法,需去掉返回值,并改正方法名this.id=id;=name;this.salary=salary;)publicvoidchangeInfo(Stringid,intsalary)/2:返回值改為bool

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論