java認(rèn)證 習(xí)題 第02章 有答案版 OK 該試題還有第0103章_第1頁
java認(rèn)證 習(xí)題 第02章 有答案版 OK 該試題還有第0103章_第2頁
java認(rèn)證 習(xí)題 第02章 有答案版 OK 該試題還有第0103章_第3頁
java認(rèn)證 習(xí)題 第02章 有答案版 OK 該試題還有第0103章_第4頁
java認(rèn)證 習(xí)題 第02章 有答案版 OK 該試題還有第0103章_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——java認(rèn)證習(xí)題第02章有答案版OK該試題還有第0103章SCJP5.0習(xí)題第02章

一、重寫和重載1二、封裝、IS-AHAS-A5四、其次章課后習(xí)題7

一、重寫和重載

問題1)假設(shè)有如下類定義,如下哪些方法可以合法放置在“//Here〞的解釋之后?publicclassRid{

publicvoidamethod(inti,Strings){}//Here}

1)publicvoidamethod(Strings,inti){}2)publicintamethod(inti,Strings){}

3)publicvoidamethod(inti,Stringmystring){}4)publicvoidAmethod(inti,Strings){}答案:1和4

Amethod中的大寫字母A意味著這是不同的方法。

問題2)假設(shè)有如下類定義,哪些代碼可以被合法放置在解釋“//Here〞之后?classBase{

publicBase(inti){}}

publicclassMyOverextendsBase{

publicstaticvoidmain(Stringarg[]){

MyOverm=newMyOver(10);}

MyOver(inti){

super(i);}

MyOver(Strings,inti){

this(i);//Here}}

1)MyOverm=newMyOver():2)super();

3)this(“Hello〞,10);4)Baseb=newBase(10);答案:4

任何this或super的調(diào)用都必需是構(gòu)造函數(shù)中的第一行。由于方法已經(jīng)調(diào)用了this,不能有別的調(diào)用插入了。

問題3)假設(shè)有如下類定義

classMammal{Mammal(){

System.out.println(“Mamml〞);}}

classDogextendsMammal{Dog(){

System.out.println(“Dog〞);}}

publicclassCollieextendsDog{

publicstaticvoidmain(Stringargv[]){Colliec=newCollie();}

Collie(){

this(“GoodDog〞);

System.out.println(“Collie〞);}

Collie(Strings){

System.out.println(s);}}

將會輸出什么?

1)Compiletimeerror

2)Mammal,Dog,GoodDog,Collie3)GoodDog,Collie,Dog,Mammal4)GoodDog,Collie

答案:2)Mammal,Dog,GoodDog,Collie

問題4)下面哪些論述是正確的?1)構(gòu)造方法不能被繼承

2)構(gòu)造方法可以被重寫;《重寫不是重載》.3)父類的構(gòu)造方法可以使用this調(diào)用4)任何方法都可以調(diào)用this和super答案:1

問題5)試圖編譯并運行下面代碼會發(fā)生什么?classBase{

publicvoidamethod(inti,Strings){

System.out.println(“Baseamethod〞);}

Base(){

System.out.println(“BaseConstructor〞);}}

publicclassChildextendsBase{

inti;

StringParm=“Hello〞;

publicstaticvoidmain(Stringargv[]){

Childc=newChild();c.amethod();}

voidamethod(inti,StringParm){

super.amethod(i,Parm);}

publicvoidamethod(){}

}

1)編譯錯誤

2)錯誤,super.amethod(i,Parm)語法不正確3)輸出“BaseConstructor〞

4)錯誤,super.amethod的參數(shù)名字不正確答案:1

這會導(dǎo)致一個錯誤,意思是說“你不能重寫方法使其訪問權(quán)限更靠近私有〞。基類的amethod版本被明確的標(biāo)注為public,但是在子類中沒有標(biāo)識符。好了,所以這不是在考察你的構(gòu)造函數(shù)重載的知識,但是他們也沒在考試中告訴你主題。若這段代碼沒有省略關(guān)鍵字public,將會輸出“Baseconstructor〞,選項3。

問題6)試圖編譯并運行如下代碼時將發(fā)生什么?classMammal{Mammal(){

System.out.println(“Four〞);}

publicvoidears(){

System.out.println(“Two〞);}}

classDogextendsMammal{Dog(){

super.ears();

System.out.println(“Three〞);}}

publicclassScottieextendsDog{

publicstaticvoidmain(Stringargv[]){

System.out.println(“One〞);Scottieh=newScottie();}}

1)One,Three,Two,Four2)One,Four,Three,Two3)One,Four,Two,Three4)Compiletimeerror

答案:3)One,Four,Two,Three

類是從層次的根部往下創(chuàng)立的。因此,首先輸出One,由于它在Scottieh初始化之前創(chuàng)立。

然后,JVM移動到層次的基類,運行“祖父類〞Mammal的構(gòu)造函數(shù)。這會輸出“Four〞。然后,運行Dog的構(gòu)造函數(shù)。Dog的構(gòu)造函數(shù)調(diào)用Mammal中的ears方法,因此輸出“Two〞。最終,Dog的構(gòu)造函數(shù)完成,輸出“Three〞。

問題7)給定下面的類定義publicclassUpton{

publicstaticvoidmain(Stringargv[]){}

publicvoidamethod(inti){}//Here}

下面哪一個在替換//Here后是合法的?1)publicintamethod(intz){}

2)publicintamethod(inti,intj){return99;}3)protectedvoidamethod(longl){}4)privatevoidanothermethod(){}答案:2、3和4

選項1由于兩個原因不會被編譯。第一個相當(dāng)明顯,由于它要求返回一個integer。另一個是試著直接在類內(nèi)部重新定義一個方法。把參數(shù)的名字從i換成z是無效的,并且一個方法不能在同一個類里重寫。

問題8)給定下面的類定義classBase{

publicvoidamethod(){

System.out.println(\}}

publicclassHayextendsBase{

publicstaticvoidmain(Stringargv[]){

Hayh=newHay();h.amethod();}}

下面在類Hay中的哪一個方法將會編譯并使程序打印出字符串\?1)publicintamethod(){System.out.println(\

2)publicvoidamethod(longl){System.out.println(\3)publicvoidamethod(){System.out.println(\4)publicvoidamethod(void){System.out.println(\答案:3)publicvoidamethod(){System.out.println(\

選項3重寫了類Base的方法,因此任何無參數(shù)調(diào)用都調(diào)用這個版本。選項1修改方法的返回值類型。

選項2將會編譯,結(jié)果是調(diào)用父類中的方法

問題9)給定下面的類定義publicclassShrubHill{

publicvoidforegate(StringsName){}//Here

}

下面的哪一個方法可以合法的直接替換//Here?1)publicintforegate(StringsName){}

2)publicvoidforegate(StringBuffersName){}3)publicvoidforeGate(StringsName){}4)privatevoidforegate(StringsType){}答案9)

2)publicvoidforegate(StringBuffersName){}3)publicvoidforeGate(StringsName){}

選項1是試著定義一個方法兩次,有一個int返回值并不能幫助將它與存在的foregate方法相區(qū)分。而像選項4那樣改變方法的參數(shù)名,也不能與存在的方法相區(qū)分。注意,選項3里的foreGate方法有一個大寫的G。

二、封裝、IS-AHAS-A

問題1)假設(shè)你被給予如下設(shè)計

“一個人有姓名,年齡,地址和性別。你將要設(shè)計一個類來表示一類叫做病人的人。這

種人可以被給予診斷,有配偶并且可能活著〞。假設(shè)表示人的類已經(jīng)創(chuàng)立了,當(dāng)你設(shè)計病人類時如下哪些應(yīng)當(dāng)被包含在內(nèi)?1)registrationdate2)age3)sex

4)diagnosis答案1)

1)registrationdate2)diagnosis

對于病人來說,注冊日期是一個合理的添加域,并且設(shè)計明確地指出病人應(yīng)當(dāng)有診斷報告。由于病人是人的一種,它應(yīng)當(dāng)有域age和sex(假設(shè)它們沒有被聲明為私有的)。

問題2)當(dāng)你試圖編譯并運行如下代碼時會發(fā)生什么?classBase{inti=99;

publicvoidamethod(){

System.out.println(

溫馨提示

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

最新文檔

評論

0/150

提交評論