




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
java繼承多態(tài)面試題及答案選擇題1.以下關于Java繼承的說法,正確的是()A.一個類可以繼承多個父類B.子類不能訪問父類的私有成員C.子類重寫父類方法時,訪問權限可以降低D.所有類都直接或間接繼承自`Object`類答案:BD分析:Java不支持多重繼承,一個類只能有一個直接父類,A錯誤;子類重寫父類方法時,訪問權限不能降低,C錯誤;子類不能訪問父類私有成員,所有類都直接或間接繼承自`Object`類,B、D正確。2.以下代碼的輸出結果是()```javaclassParent{voidshow(){System.out.println("Parent'sshowmethod");}}classChildextendsParent{@Overridevoidshow(){System.out.println("Child'sshowmethod");}}publicclassMain{publicstaticvoidmain(String[]args){Parentp=newChild();p.show();}}```A.Parent'sshowmethodB.Child'sshowmethodC.編譯錯誤D.運行時錯誤答案:B分析:這是多態(tài)的體現(xiàn),`p`引用指向`Child`對象,調用`show`方法時會執(zhí)行`Child`類中重寫的方法。3.關于方法重寫和方法重載,下列說法錯誤的是()A.方法重寫發(fā)生在父子類之間,方法重載發(fā)生在同一個類中B.方法重寫要求方法名、參數(shù)列表和返回值類型都相同C.方法重載要求方法名相同,但參數(shù)列表不同D.方法重寫和方法重載都可以改變訪問修飾符答案:B分析:方法重寫要求方法名、參數(shù)列表相同,返回值類型可以是父類方法返回值類型的子類(協(xié)變返回類型),B錯誤;A、C、D描述正確。4.以下代碼能否編譯通過()```javaclassA{privatevoidmethod(){System.out.println("A'smethod");}}classBextendsA{publicvoidmethod(){System.out.println("B'smethod");}}```A.能B.不能答案:A分析:父類的私有方法不能被重寫,`B`類中的`method`方法和`A`類中的`method`方法沒有重寫關系,只是同名的兩個方法,所以可以編譯通過。5.若有以下類定義:```javaclassSuperClass{protectedintvalue;publicSuperClass(intv){value=v;}}classSubClassextendsSuperClass{publicSubClass(){//此處需要添加代碼}}```在`SubClass`的構造方法中,正確的代碼是()A.`super();`B.`super(0);`C.`value=0;`D.不需要添加任何代碼答案:B分析:父類沒有無參構造方法,子類構造方法中必須顯式調用父類的有參構造方法,所以選B。6.多態(tài)的實現(xiàn)方式不包括()A.方法重寫B(tài).方法重載C.接口實現(xiàn)D.抽象類繼承答案:B分析:方法重載是同一個類中方法的多態(tài)表現(xiàn),但不是實現(xiàn)多態(tài)的方式,多態(tài)的實現(xiàn)方式主要有方法重寫、接口實現(xiàn)、抽象類繼承,選B。7.以下代碼的輸出結果是()```javaclassBase{staticvoidstaticMethod(){System.out.println("Base'sstaticmethod");}}classDerivedextendsBase{staticvoidstaticMethod(){System.out.println("Derived'sstaticmethod");}}publicclassMain{publicstaticvoidmain(String[]args){Baseb=newDerived();b.staticMethod();}}```A.Base'sstaticmethodB.Derived'sstaticmethodC.編譯錯誤D.運行時錯誤答案:A分析:靜態(tài)方法不具有多態(tài)性,調用靜態(tài)方法時根據(jù)引用類型來決定調用哪個類的方法,`b`是`Base`類型的引用,所以調用`Base`類的靜態(tài)方法。8.以下關于抽象類的說法,錯誤的是()A.抽象類不能被實例化B.抽象類中必須有抽象方法C.抽象類可以有非抽象方法D.子類繼承抽象類必須實現(xiàn)其所有抽象方法,除非子類也是抽象類答案:B分析:抽象類中可以沒有抽象方法,只要類被聲明為`abstract`就是抽象類,B錯誤;A、C、D描述正確。9.若有以下接口和類定義:```javainterfaceMyInterface{voidmethod();}classMyClassimplementsMyInterface{publicvoidmethod(){System.out.println("Methodimplementation");}}```以下代碼能正常運行的是()A.`MyInterfaceobj=newMyInterface();`B.`MyInterfaceobj=newMyClass();`C.`MyClassobj=newMyInterface();`D.以上都不對答案:B分析:接口不能實例化,A錯誤;可以用接口類型的引用指向實現(xiàn)該接口的類的對象,B正確;不能用類類型的引用指向接口對象,C錯誤。10.以下代碼的輸出結果是()```javaclassAnimal{voidsound(){System.out.println("Animalmakessound");}}classDogextendsAnimal{@Overridevoidsound(){System.out.println("Dogbarks");}}classCatextendsAnimal{@Overridevoidsound(){System.out.println("Catmeows");}}publicclassMain{publicstaticvoidmain(String[]args){Animal[]animals={newDog(),newCat()};for(Animalanimal:animals){animal.sound();}}}```A.AnimalmakessoundAnimalmakessoundB.DogbarksCatmeowsC.編譯錯誤D.運行時錯誤答案:B分析:這是多態(tài)的體現(xiàn),數(shù)組中存儲的`Dog`和`Cat`對象,調用`sound`方法時會執(zhí)行各自類中重寫的方法。11.關于`final`關鍵字,以下說法錯誤的是()A.用`final`修飾的類不能被繼承B.用`final`修飾的方法不能被重寫C.用`final`修飾的變量不能被重新賦值D.用`final`修飾的類可以有抽象方法答案:D分析:用`final`修飾的類不能被繼承,也就不能有抽象方法,因為抽象方法需要子類實現(xiàn),D錯誤;A、B、C描述正確。12.以下代碼的輸出結果是()```javaclassA{publicA(){System.out.println("A'sconstructor");}}classBextendsA{publicB(){System.out.println("B'sconstructor");}}publicclassMain{publicstaticvoidmain(String[]args){Bb=newB();}}```A.A'sconstructorB'sconstructorB.B'sconstructorC.編譯錯誤D.運行時錯誤答案:A分析:創(chuàng)建子類對象時,會先調用父類的構造方法,再調用子類的構造方法。13.以下代碼中,`Child`類對`Parent`類的`method`方法進行了()```javaclassParent{voidmethod(inta){System.out.println("Parent'smethodwithint");}}classChildextendsParent{voidmethod(doublea){System.out.println("Child'smethodwithdouble");}}```A.重寫B(tài).重載C.既不是重寫也不是重載D.編譯錯誤答案:B分析:方法重載要求方法名相同,參數(shù)列表不同,這里`Child`類的`method`方法和`Parent`類的`method`方法參數(shù)類型不同,屬于方法重載。14.若有以下類定義:```javaabstractclassShape{abstractdoublearea();}classCircleextendsShape{privatedoubleradius;publicCircle(doubler){radius=r;}@Overridepublicdoublearea(){returnMath.PIradiusradius;}}```以下代碼能正常運行的是()A.`Shapes=newShape();`B.`Shapes=newCircle(5);`C.`Circlec=newShape(5);`D.以上都不對答案:B分析:抽象類不能實例化,A錯誤;可以用抽象類類型的引用指向實現(xiàn)該抽象類的子類對象,B正確;不能用子類類型的引用指向抽象類對象,C錯誤。15.以下關于接口的說法,正確的是()A.接口中的方法默認是`publicabstract`的B.接口中的變量默認是`privatefinal`的C.一個類只能實現(xiàn)一個接口D.接口可以有構造方法答案:A分析:接口中的方法默認是`publicabstract`的,變量默認是`publicstaticfinal`的,A正確,B錯誤;一個類可以實現(xiàn)多個接口,C錯誤;接口沒有構造方法,D錯誤。16.以下代碼的輸出結果是()```javaclassGrandParent{voidprint(){System.out.println("GrandParent'sprintmethod");}}classParentextendsGrandParent{@Overridevoidprint(){System.out.println("Parent'sprintmethod");}}classChildextendsParent{@Overridevoidprint(){System.out.println("Child'sprintmethod");}}publicclassMain{publicstaticvoidmain(String[]args){GrandParentgp=newChild();gp.print();}}```A.GrandParent'sprintmethodB.Parent'sprintmethodC.Child'sprintmethodD.編譯錯誤答案:C分析:這是多態(tài)的體現(xiàn),`gp`引用指向`Child`對象,調用`print`方法時會執(zhí)行`Child`類中重寫的方法。17.以下代碼能否編譯通過()```javainterfaceMyInterface{privatevoidprivateMethod(){System.out.println("Privatemethod");}}```A.能,從Java9開始接口可以有私有方法B.不能,接口中不能有私有方法答案:A分析:從Java9開始,接口可以有私有方法,所以能編譯通過。18.以下關于繼承中構造方法的說法,錯誤的是()A.子類構造方法會默認調用父類的無參構造方法B.若父類沒有無參構造方法,子類構造方法必須顯式調用父類的有參構造方法C.子類構造方法可以在任意位置調用父類構造方法D.父類構造方法不會被子類繼承答案:C分析:子類構造方法中調用父類構造方法必須放在第一行,C錯誤;A、B、D描述正確。19.以下代碼的輸出結果是()```javaclassX{publicX(){System.out.println("X'sconstructor");}publicvoidmethod(){System.out.println("X'smethod");}}classYextendsX{publicY(){System.out.println("Y'sconstructor");}@Overridepublicvoidmethod(){super.method();System.out.println("Y'smethod");}}publicclassMain{publicstaticvoidmain(String[]args){Yy=newY();y.method();}}```A.X'sconstructorY'sconstructorX'smethodY'smethodB.Y'sconstructorX'smethodY'smethodC.X'sconstructorY'sconstructorY'smethodD.編譯錯誤答案:A分析:創(chuàng)建`Y`對象時先調用`X`的構造方法,再調用`Y`的構造方法,調用`method`方法時先通過`super`調用父類的`method`方法,再執(zhí)行`Y`類的`method`方法。20.若有以下接口和類定義:```javainterfaceMyInterface{intVALUE=10;voidmethod();}classMyClassimplementsMyInterface{@Overridepublicvoidmethod(){System.out.println("Value:"+VALUE);}}```以下說法正確的是()A.`MyInterface`中的`VALUE`變量可以被修改B.`MyClass`中可以不實現(xiàn)`method`方法C.`MyClass`可以訪問`MyInterface`中的`VALUE`變量D.以上都不對答案:C分析:接口中的變量默認是`publicstaticfinal`的,不能被修改,A錯誤;實現(xiàn)接口的類必須實現(xiàn)接口中的所有抽象方法,B錯誤;類實現(xiàn)接口后可以訪問接口中的常量,C正確。21.以下代碼的輸出結果是()```javaclassA{intnum=10;voidprintNum(){System.out.println(num);}}classBextendsA{intnum=20;@OverridevoidprintNum(){System.out.println(num);}}publicclassMain{publicstaticvoidmain(String[]args){Aa=newB();a.printNum();}}```A.10B.20C.編譯錯誤D.運行時錯誤答案:B分析:這是多態(tài)的體現(xiàn),調用`printNum`方法時執(zhí)行`B`類中重寫的方法,輸出`B`類中的`num`值。22.關于抽象類和接口的區(qū)別,以下說法錯誤的是()A.抽象類可以有構造方法,接口沒有構造方法B.抽象類中的成員變量可以是各種訪問修飾符,接口中的成員變量只能是`publicstaticfinal`C.一個類只能繼承一個抽象類,但可以實現(xiàn)多個接口D.抽象類和接口都可以有非抽象方法答案:D分析:接口在Java8之前只能有抽象方法,Java8開始可以有默認方法和靜態(tài)方法,但抽象類一直可以有非抽象方法,D表述不準確;A、B、C描述正確。23.以下代碼的輸出結果是()```javaclassSuper{publicSuper(inti){System.out.println("Super'sconstructorwithint:"+i);}}classSubextendsSuper{publicSub(){super(5);System.out.println("Sub'sconstructor");}}publicclassMain{publicstaticvoidmain(String[]args){Subs=newSub();}}```A.Super'sconstructorwithint:5Sub'sconstructorB.Sub'sconstructorC.編譯錯誤D.運行時錯誤答案:A分析:子類構造方法中顯式調用父類的有參構造方法,先執(zhí)行父類構造方法,再執(zhí)行子類構造方法。24.以下代碼中,`Child`類的`method`方法對`Parent`類的`method`方法是()```javaclassParent{publicvoidmethod(){System.out.println("Parent'smethod");}}classChildextendsParent{publicvoidmethod(){System.out.println("Child'smethod");}}```A.重寫B(tài).重載C.覆蓋D.以上都對答案:A分析:方法重寫要求方法名、參數(shù)列表相同,這里`Child`類的`method`方法和`Parent`類的`method`方法符合重寫的條件,覆蓋和重寫意思相近,通常說重寫,選A。25.若有以下類定義:```javaclassBase{protectedvoidprotectedMethod(){System.out.println("Base'sprotectedmethod");}}classDerivedextendsBase{@OverridepublicvoidprotectedMethod(){System.out.println("Derived'sprotectedmethod");}}```以下說法正確的是()A.`Derived`類中重寫`protectedMethod`方法時訪問修飾符不能改為`public`B.`Derived`類中重寫`protectedMethod`方法時可以將訪問修飾符擴大C.`Derived`類中不需要重寫`protectedMethod`方法D.以上都不對答案:B分析:子類重寫父類方法時訪問修飾符可以擴大,B正確,A錯誤;如果需要改變方法的實現(xiàn)則可以重寫,C不準確。簡答題26.簡述Java中繼承的概念和作用。答案:繼承是指一個類(子類)可以繼承另一個類(父類)的屬性和方法。作用包括:代碼復用,避免重復編寫相同的代碼;實現(xiàn)多態(tài),提高代碼的靈活性和可擴展性;建立類之間的層次關系,便于代碼的組織和管理。27.什么是方法重寫?重寫的規(guī)則有哪些?答案:方法重寫是指子類重新實現(xiàn)父類中已有的方法。規(guī)則如下:方法名、參數(shù)列表必須相同;返回值類型可以是父類方法返回值類型的子類(協(xié)變返回
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年地方志編纂與管理考試相關知識試卷及答案
- 2025年中國冷凍儲物袋行業(yè)市場全景分析及前景機遇研判報告
- 市政管道進場安全教育
- 員工入場安全培訓
- 中醫(yī)護理相關知識
- 教育勞動的德性價值闡釋
- 高考歷史熱點難點押題預測 經(jīng)濟與社會生活(含解析)
- 幼兒園小班數(shù)學《幫幫小豬》教案
- 幼兒園小班美術版畫教案龍卷風
- java面試題及答案kafka篇
- 2025發(fā)展對象考試題庫與參考答案
- 絕交協(xié)議書2025修訂版:規(guī)范情感解除流程的法律文件
- 煤礦安全用電培訓課件
- GB/T 45019-2024道路用玄武巖纖維瀝青混合料
- 2024版新能源汽車充電站場地租賃及充電服務合同2篇
- 特種設備日管控、周排查、月調度模板
- 急性髓系白血病護理個案
- 兒童膿毒血癥護理
- 頂板事故應急演練
- 智研咨詢發(fā)布:中國企業(yè)數(shù)字化解決方案行業(yè)市場發(fā)展環(huán)境及前景研究報告
- 《大學計算機基礎案例教程(微課版)第2版》全套教學課件
評論
0/150
提交評論