弄清Java中方法覆蓋時的規則

今天瀏覽網頁,無意間看到這樣一道題:

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正確

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章