1.下面描述函數重寫錯誤的是( C )
A. 要有子類繼承或實現
B. 子類方法的權限必須大於等於父類的權限
C. 父類中被private權限修飾的方法可以被子類重寫
D. 子類重寫接口中的抽象方法,子類的方法權限必須是public的
自己選錯:B,子類可以訪問父類,也可以訪問自己,所以權限大於父類;
C,父類的私有子類不能訪問,只能通過訪問父類的共有間接訪問父類的私有;
2.分析如下Java代碼,如果想在控制檯上輸出“B類的test()方法”,則在主函數應填入( AD)。
class A {
public void test() {
System.out.println("A類的test()方法");
}
}
class B extends A {
public void test() {
System.out.println("B類的test()方法");
}
public static void main(String args[]) {
}
}
A. A a = new B(); a.test(); //可以通過父類的引用指向子類對象,來訪問
B. A a = new A(); a.test();
C. B b = new A(); b.test();
D. new B().test(); //可以通過子類直接訪問
3. 給定java代碼,如下: abstract class Shape {
abstract void draw( );
}
要創建Shape類的子類Circle,以下代碼正確的是( BD )。
A. class Circle extends Shape{ int draw( ){} }
B. abstract class Circle extends Shape{ } //子類繼承父類,但沒有抽象類;
C. class Circle extends Shape{ void draw( ); }
D. class Circle extends Shape{ void draw( ){ } } //子類繼承父類,並且擁有抽象類在子類實現;
4. 在Java中,下面對於構造函數的描述正確的是( D )。
A. 類必須顯式定義構造函數 //多選了A,如果沒有系統會自己幫你加一個無參構造函數;
B. 構造函數的返回類型是void
C. 構造函數和類有相同的名稱,並且不能帶任何參數
D. 一個類可以定義多個構造函數
5. 在Java中,下面關於抽象類的描述正確的是( BD )。
A. 抽象類本身可以被實例化
B. 如果一個類中有一個方法被聲明爲抽象的,那麼這個類必須是抽象類 //少選了B,正確我也不知道當時爲什麼沒選
C. 抽象類中的方法必須都是抽象的
D. 聲明抽象類必須帶有關鍵字abstract
6. 下面對this的作用描述錯誤的是 ( D )
A. 當成員變量和局部變量重名的時候可以用this區分
B. this()語句必須放在構造函數的第一行,根據this後面括號中的參數調用本類其他的構造函數.
C. this可以用本類的一般函數 //當時選了C,這個可以;
D. this可以調用父類的一般函數 //this指代的是當前對象,或者當前對象的引用,但是this現在在子類,不能到父類中
7. 在java中,已定義了兩個接口B和C,以下語句正確的是 ( AC )
A. interface A extends B,C //接口和接口本來就是繼承關係,所以接口A可以繼承接口B,接口C;
B. interface A implements B,C
C. class A implements B,C
D. class A implements B,implements C //一個類可以擁有多個接口
8.在Java接口中定義常量,下面語法正確的是( ABC )。
A. static final int MALE = 1;
B. final int MALE = 1;
C. int MALE = 1; //自動隱藏了 public static final;
D. private int MALE = 1;
9. 下列選項中關於Java中super關鍵字的說法錯誤的是(B)。
A. 當子父類中成員變量重名的時候,在子類方法中想輸出父類成員變量的值,可以用super區分子父類成員變量
B. super語句可以放在構造函數的任意一行 //實例化子類對象調用子類構造函數進行初始化前,必須調用父類的構造函數
//對父類進行初始化,防止子類無法初始化
C. 子類可以通過super關鍵字調用父類的方法
D. 子類可以通過super關鍵字調用父類的屬性 //可以super . 屬性;
10. 以下關於Object類說法錯誤的是( B )。
A. 一切類都直接或間接繼承自Object類 //Object爲超類,所有的類都繼承於Object類;
B. 接口也繼承Object類 //Object和interface沒什麼關係;
解答:如果一個接口也繼承了Object 類,那麼接口會繼承Object類中的很多方法,顯然會錯,因爲那些方法都是實方法,不是
抽象方法。比如toString() 方法,被繼承過來,不滿足接口中方法都是抽象方法。
C. Object類中定義了toString()方法
D. Object類在java.lang包中
11. 多態的前提是方法重寫,訪問子類重寫的方法;接口訪問子類的特有功能;
12. 下面說法中錯誤的是 ( D )
A. 靜態代碼塊只在類加載的時候執行一次 , 以後再創建對象的時候不執行 //對的
B. 局部代碼塊的作用是爲了限制變量的生命週期 //對的
C. 構造代碼塊在每創建一次對象就執行一次 //對的
D. 以上都不對
13. 關於類和對象的敘述正確的是:( A )
A.Java的類分爲兩大部分:系統定義的類和用戶自定義的類
B.類的靜態成員變量(類變量)和普通成員變量(實例變量)的概念完全一樣,只是表達形式不同 //錯的
C.定義一個類時,該類的成員至少要有一個成員變量和一個成員方法 //沒有也可以
D.類是對象的實例化 //類是對象的抽象,對象是類的實例化;