Java抽象類介面、內部類題庫
一、 選擇題
1. |
Person類和Test類的程式碼如下所示,則程式碼中的錯誤語句是( C )。(選擇一項) |
|
public class Person { public String name; public Person(String name) { this.name = name; } } public class Test { public static void main(String[] args) { final Person person = new Person("歐歐"); person.name = "美美"; person = new Person("亞亞"); } } |
||
A. |
final Person person = new Person("歐歐"); |
|
B. |
person.name = "美美"; |
|
C. |
person = new Person("亞亞"); |
|
D. |
沒有錯誤 |
2. |
如下Java程式碼執行的結果是( B |
|
public class Test { final int age; public Test(){ age=10; } public static void main(String[ ] args) { System.out.println(new Test().age); } } |
||
A |
輸出:0 |
|
B. |
輸出:10 |
|
C. |
輸出:null |
|
D. |
執行時出現異常 |
3. |
以下程式碼中錯誤的語句是( D )。(選擇一項) |
|
public class Something{ public static void main(String[] args){ final Other o=new Other(); new Something().addOne(o);//1 } public void addOne( Other o){ o.i++;//2 o = new Other();//3 } } class Other{ public int i; } |
||
A |
1 |
|
B. |
2 |
|
C. |
3 |
|
D. |
沒有錯誤 |
4. |
下列選項中,關於Java的抽象類和抽象方法說法正確的是( AC )。(選擇二項) |
|
A |
抽象類中可以含有0個或多個抽象方法 |
|
B. |
抽象類中不可以有構造方法 |
|
C. |
一個類中若有抽象方法,則這個類必為抽象類 |
|
D. |
子類必須重寫父類所有的抽象方法 |
5. |
在Java中關於abstract關鍵字,以下說法正確的是( AB )。(選擇兩項) |
|
A |
abstract類中可以沒有抽象方法 |
|
B. |
abstract類的子類也可以是抽象類 |
|
C. |
abstract方法可以有方法體 |
|
D. |
abstract類可以建立物件 |
6. |
以下選項可替換題目中//add code here而不產生編譯錯誤的是( AD )。(選擇二項) |
|
public abstract class MyClass{ public int constInt=5; //add code here public void method( ){ } } |
||
A |
public abstract void method(int a); |
|
B. |
constInt =constInt+5; |
|
C. |
public int method( ); |
|
D. |
public abstract void anotherMethod( ); |
7. |
在Java介面中,下列選項中屬於有效的方法宣告是( AC )。(選擇二項) |
|
A |
public void aMethod( ); |
|
B. |
final void aMethod( ); |
|
C. |
void aMethod(){ } |
|
D. |
private void aMethod( ); |
8. |
以下選項中關於匿名內部類的說法正確的是( BC )。(選擇二項) |
|
A. |
匿名內部類可以實現多個介面,或者繼承一個父類 |
|
B. |
匿名內部類不能是抽象類,必須實現它的抽象父類或者接口裡包含的所有抽象方法 |
|
C. |
匿名內部類沒有類名,所以匿名內部類不能定義構造方法 |
|
D. |
匿名內部類可以直接訪問外部類的所有區域性變數 |
二、 判斷題(共20個題目,總計10分)
- 宣告為final的類不能是超類。( T )
- 使用final修飾的變數將變成常量,其中不能再被改變;使用final修飾的方法將無法被子類過載;使用final修飾的類將無法再被其他類繼承。( T )
- 抽象方法不能含有方法體,並且必須定義在抽象類中。( F )
- 抽象類是指在class前加使用abstract關鍵字修飾,且可以存在抽象方法和普通方法的類。( T )
- 介面中只有常量,沒有變數;只有抽象方法,並且全部都是public方法。( T )
- 抽象類和介面都不能例項化,都沒有構造方法。( F )
- 介面並不要求實現類和介面在概念本質上一致的,僅僅是實現了介面定義的約定或者能力而已。介面定義了“做什麼”,而實現類負責完成“怎麼做”,體現了功能(規範)和實現分離的原則。( T )
- 內部類作為外部類成員,許可權修飾符和其他成員一樣,可宣告為private、預設、protected或public。( T )
- 匿名內部類適合建立那種只需要使用一次的類,它可以實現一個或多個介面,或者繼承一個父類。( F )
- 對於物理連線,比如資料庫連線、輸入流輸出流、Socket連線等,垃圾回收機制無能為力,必須手動關閉才可以。( T )
- 垃圾回收機制回收任何物件之前,總會先呼叫它gc( )方法,該方法是Object類提供的方法。不要主動呼叫某個物件的該方法,應該交給垃圾回收機制呼叫。( F )
三、 簡答題
- final和abstract關鍵字的作用。
- 介面和抽象類的聯絡和區別。
- 內部類的型別及其特點。
四、 編碼題
1.編寫程式描述兔子和青蛙
需求說明:使用面向物件的思想,設計自定義類描述兔子和青蛙。
實現思路及關鍵程式碼
1) 分析兔子和青蛙的共性
2) 根據共性,定義抽象的動物類
屬性:名字、顏色、類別(哺乳類、非哺乳類)
方法:吃飯,發出叫聲
3) 根據青蛙會游泳 抽象游泳的介面
方法:游泳
4) 定義兔子繼承動物類,青蛙繼承動物同時實現游泳介面
程式執行結果如圖所示。
- /**
- *
- * 動物類
- *
- * @author Administrator
- *
- */
- publicabstractclassAnimal
- {
- privateString name;//名字
- privateString color;//顏色
- privateString type;//類別(哺乳類、非哺乳類)
- publicAnimal()
- {
- super();
- }
- publicAnimal(String name,String color,String type)
- {
- super();
- this.name = name;
- this.color = color;
- this.type = type;
- }
- publicString getName()
- {
- return name;
- }
- publicvoid setName(String name)
- {
- this.name = name;
- }
- publicString getColor()
- {
- return color;
- }
- publicvoid setColor(String color)
- {
- this.color = color;
- }
- publicString getType()
- {
- return type;
- }
- publicvoid setType(String type)
- {
- this.type = type;
- }
- /**
- *
- * 發出叫聲
- *
- */
- publicabstractvoid shout();
- /**
- *
- * 吃飯
- *
- */
- publicabstractvoid eat();
- }
- /**
- *
- * 游泳介面
- *
- * @author Administrator
- *
- */
- publicinterfaceSwimmable
- {
- /**
- *
- * 游泳
- *
- */
- publicvoid swim();
- }
- publicclassFrogextendsAnimalimplementsSwimmable
- {
- publicFrog()
- {
- super();
- }
- publicFrog(String name,String color,String type)
- {
- super(name, color, type);
- }
- @Override
- publicvoid shout()
- {
- System.out.println("那隻"+super.getColor()
- +"的,名字叫"+super.getName()+"的青蛙正在呱呱的叫");
- }
- @Override