今天瀏覽網頁,無意間看到這樣一道題:
class A{
protected int method(int a){
return 0;
}
}
which two are valid in a class that extends A?
A:public int method(int a){return 0;}
B:private int method(int a){return 0;}
C:private int method(long a){return 0l;}
D:public short method(int a){return 0;}
E:static protected int method(int a){return 0;}
我用Eclipse敲了一遍,正確的是AE,但是C沒有明確報錯,只是一個警告,分析:
在對父類方法進行覆蓋時,不能縮小父類方法的訪問權限,因此A對B錯
C實際上沒有對A的method方法進行覆蓋,應爲他們的參數列表不同
D不能改變覆蓋的方法的返回值,D錯
E正確