1. 程式人生 > >關於抽象類和介面的易錯概念選擇題(JAVA基礎)

關於抽象類和介面的易錯概念選擇題(JAVA基礎)

1.以下方法錯誤的是(A D)
A 覆蓋方法包括成員方法的覆蓋和成員變數的覆蓋
B 成員方法的覆蓋是多型的一種表現形式
C 子類可以呼叫父類中被覆蓋的方法
D 任何方法都可以被覆蓋
分析:在子類中呼叫父類方法使用super關鍵字。super.a() 就可以呼叫父類的a方法。 
在類繼承或者介面實現過程中就會涉及到成員屬性以及成員函式的重寫,需要注意的是,成員函式的重寫是直接覆蓋父類的(繼承中),但是成員變數重寫是不會進行覆蓋的
如果子類本身沒有定義使用this關鍵字可以去訪問父類的成員變數。
最後final修飾的方法不能被覆蓋 覆蓋即重寫和過載一起都是多型的表現形式。

2.下面說法正確的是(C H)
A instanceof 關鍵字用來判定某個類是否為抽象類。
B final關鍵字修飾的成員變數不需要初始化。
C 介面的方法都是抽象方法(jdk1.8之前),並且沒有方法體
D 當我們繼承一個抽象類時,我們必須要實現抽象類的抽象方法。
E 在向上轉型的過程中,如果父類和子類擁有相同的名字的成員方法(非靜態)
訪問的是子類的該方法。如果父類和子類擁有名字的成員變數時,訪問的是子類的成員變數。
F 內部類訪問為外部類方法時,不用建立外部類物件直接訪問外部類方法。
G 內部類變數不能設定為static,也不能設定為final
H 多型通常用來作為引數傳入或者作為返回值返回。

3.下面說法不正確得是(A C D E)
A 不能和abstract一起使用的修飾符有static final public final
B 抽象類之間是繼承關係,介面之間也是。
C 介面不能存在普通方法和常量
D區域性內部類public,private修飾符修飾
E介面不可以直接例項化,抽象類可以

4.下面有那些選項是對的(B C E)
A instanceof是一個二元修飾符,作用是用來判斷左邊的物件是否是右邊類的例項,返回的是布林型別
B private protected 和static都不可以修飾interface介面
C this.屬性名訪問的是本類中的屬性,如果本類中沒有,就從父類中繼續查詢
D物件是對類的抽象化
E 介面中可以有常量
分析

介面可以有常量(jdk1.8以後) instanceof 是一個二元修飾符,作用是用來判斷左邊的物件是否是右邊類的例項 或者是右邊超類的例項

5.以下說法正確的是 ( B )
對於方法內得形參()
A 必須定義多個形參
B 可以沒有
C 至少有一個
D 只能是簡單變數

6.以下說法正確的是( C )
A 對於區域性內部類,不能在class前加任何修飾符(public default private protected)來修飾B 只要沒有定義不帶引數的建構函式,JVM都會為類生成一個預設的建構函式
C 向上轉型中,父類與子類擁有相同名字的普通方法時,訪問的是子類的成員方法
D單例模式中類的構造方法使用private修飾,宣告為私有,這樣就不能在類的外部使用new關鍵字來建立例項物件了

7.final修飾的方法不可重寫的(子類不能重寫父類final方法,但是可以呼叫)

8.以下說法正確的是(E G)
A 抽象方法是一種功能契約(功能契約即為介面),不實現抽象方法就無法構造物件
B 介面中的抽象方法只能是public的,而抽象類中的抽象方法可以用別的修飾符修飾
C 類是物件的抽象模型,刻畫了物件中所有資訊
D 抽象方法不能用final來修飾 ,可以用satic來修飾
E 對計算公式已不需要更改的書數學哈書,常用public static final 來修飾;
F 若類中有final abstract來修飾 的 方法 ,必須實現該方法才能構造物件。
G 引用是物件的名字,引用值是物件的起始地址

9.下列的說法錯誤的是(B)
A 抽象類必須被子類繼承
B 物件向上轉型以後,擁有相同名字的普通成員變數(靜態變數)時,訪問的是子類裡面的
C super的主要功能是完成子類的呼叫父類的內容,並且只能放在子類構造方法的第一行
D 介面的方法必須定義為public許可權,並且只能是抽象方法(不考慮jdk1.8)

10.下面那些選項是錯誤的(A B D E)
A instanceof 是一個二元操作符,只用來判斷左邊的物件是否是右邊的類的例項,返回是布林型
B 成員內部類可以使用任何修飾符修飾,可以定義常量和靜態變數
C this.屬性名訪問的是本類中的屬性,如果本類中沒有,就從父類中繼續查詢
D 在成員方法裡面叫做區域性內部類,可以訪問外部類屬性和使用任何修飾符,但使用區域性內部類方法時 ,必須例項化內部類物件
E 實現內部類的呼叫,要直接例項化內部類

11 下列定義,正確的有哪些( A B C)
A介面只能做方法申明,抽象類中就可以做方法實現和方法申明
B 抽象類中的抽象方法只能申明,不能實現.abstract void abc();不能加{}
C 抽象方法要被實現,所以不能是靜態的,也不能是私有的
D 接口裡只能有公共方法,1.8以後 可以有普通方法和成員變數
E 類實現介面,利用關鍵字implement 完成 (錯誤 注意為implements)

12以下說法不正確的有(A B C D)
A擁有抽象方法的類為抽象類
B抽象類的方法時抽象方法
C繼承抽象類的子類為抽象類
D實現介面的類為抽象類

13 下列說法正確的是 ( A )
A Java程式中的main方法必須寫在類裡面
B Java程式中可以有多個main方法
C Java程式中類名必須和檔名一樣
DJava程式的main方法中如果只有一條語句,可以不用大括號括起來
E在類中宣告一個整數陣列作為成員變數,如果沒有給他賦值,數值元素值為空
F陣列本身是一個物件

14 如果在子類繼承父類,子類構造方法中沒有註明時預設第一行呼叫父類的空參構造方法

15 下列說法正確的是(A B C)
A try塊不可以省略
B 可以使用多重catch塊
C finally塊可以省略
D catch塊和finally塊可以同時省略

16 以下對自定義異常描述正確得是(A C)
A 自定義異常必須繼承Exception
B 自定義異常必須繼承Error
C 自定義異常可以更加明確地確定異常出錯位置和詳細詳細
D程式中已經提供了豐富的異常類,使用自定義異常沒有意義

17在JAVA中關於抽象類的描述正確的說(D)
A 抽象類可以被例項化
B 如果一個類中有一個方法被宣告為抽象的這個類必須是抽象類
C 抽象類的方法必須是抽象的
D 宣告抽象類必須帶有abstract關鍵字