1. 程式人生 > >Java抽象類介面、內部類題庫

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分)

  1. 宣告為final的類不能是超類。(  T  )
  2. 使用final修飾的變數將變成常量,其中不能再被改變;使用final修飾的方法將無法被子類過載;使用final修飾的類將無法再被其他類繼承。(  T  )
  3. 抽象方法不能含有方法體,並且必須定義在抽象類中。(  F  )
  4. 抽象類是指在class前加使用abstract關鍵字修飾,且可以存在抽象方法和普通方法的類。(  T  )
  5. 介面中只有常量,沒有變數;只有抽象方法,並且全部都是public方法。(  T  )
  6. 抽象類和介面都不能例項化,都沒有構造方法。(  F  )
  7. 介面並不要求實現類和介面在概念本質上一致的,僅僅是實現了介面定義的約定或者能力而已。介面定義了“做什麼”,而實現類負責完成“怎麼做”,體現了功能(規範)和實現分離的原則。(  T  )
  8. 內部類作為外部類成員,許可權修飾符和其他成員一樣,可宣告為private、預設、protected或public。(  T  )
  9. 匿名內部類適合建立那種只需要使用一次的類,它可以實現一個或多個介面,或者繼承一個父類。(  F  )
  10. 對於物理連線,比如資料庫連線、輸入流輸出流、Socket連線等,垃圾回收機制無能為力,必須手動關閉才可以。(  T  )
  11. 垃圾回收機制回收任何物件之前,總會先呼叫它gc( )方法,該方法是Object類提供的方法。不要主動呼叫某個物件的該方法,應該交給垃圾回收機制呼叫。(  F  )

三、    簡答題

  1. final和abstract關鍵字的作用。
  2. 介面和抽象類的聯絡和區別。
  3. 內部類的型別及其特點。

四、    編碼題

1.編寫程式描述兔子和青蛙

需求說明:使用面向物件的思想,設計自定義類描述兔子和青蛙。

實現思路及關鍵程式碼

1)         分析兔子和青蛙的共性

2)         根據共性,定義抽象的動物類

屬性:名字、顏色、類別(哺乳類、非哺乳類)

方法:吃飯,發出叫聲

3)         根據青蛙會游泳 抽象游泳的介面

方法:游泳

4)         定義兔子繼承動物類,青蛙繼承動物同時實現游泳介面

程式執行結果如圖所示。

  1. /**
  2. *
  3. * 動物類
  4. *
  5. * @author Administrator
  6. *
  7. */
  8. publicabstractclassAnimal
  9. {
  10. privateString name;//名字
  11. privateString color;//顏色
  12. privateString type;//類別(哺乳類、非哺乳類)
  13. publicAnimal()
  14. {
  15. super();
  16. }
  17. publicAnimal(String name,String color,String type)
  18. {
  19. super();
  20. this.name = name;
  21. this.color = color;
  22. this.type = type;
  23. }
  24. publicString getName()
  25. {
  26. return name;
  27. }
  28. publicvoid setName(String name)
  29. {
  30. this.name = name;
  31. }
  32. publicString getColor()
  33. {
  34. return color;
  35. }
  36. publicvoid setColor(String color)
  37. {
  38. this.color = color;
  39. }
  40. publicString getType()
  41. {
  42. return type;
  43. }
  44. publicvoid setType(String type)
  45. {
  46. this.type = type;
  47. }
  48. /**
  49. *
  50. * 發出叫聲
  51. *
  52. */
  53. publicabstractvoid shout();
  54. /**
  55. *
  56. * 吃飯
  57. *
  58. */
  59. publicabstractvoid eat();
  60. }
  61. /**
  62. *
  63. * 游泳介面
  64. *
  65. * @author Administrator
  66. *
  67. */
  68. publicinterfaceSwimmable
  69. {
  70. /**
  71. *
  72. * 游泳
  73. *
  74. */
  75. publicvoid swim();
  76. }
  77. publicclassFrogextendsAnimalimplementsSwimmable
  78. {
  79. publicFrog()
  80. {
  81. super();
  82. }
  83. publicFrog(String name,String color,String type)
  84. {
  85. super(name, color, type);
  86. }
  87. @Override
  88. publicvoid shout()
  89. {
  90. System.out.println("那隻"+super.getColor()
  91. +"的,名字叫"+super.getName()+"的青蛙正在呱呱的叫");
  92. }
  93. @Override