Java面試 從一道題來理解重寫 過載

2021-08-19 20:03:52 字數 1063 閱讀 1984

前言:

比較基礎的概念,只是做一道題突然對這一塊的知識記得不是很牢固,一起複習一下。

overriding:重寫,覆蓋(覆蓋父類的方法)          

overloading:過載,以類以統一的方式去處理不同型別資料的一種手段,是多型的一種表現。

來看一題:選哪個不會出錯?   

會做的話就直接跳過這一篇吧

(題源:牛客網

class a

}class b extends a

}class c extends b

a.public void foo(){}

b.public int foo()

c.public a foo(b b)

d.public a foo()

1.重寫:

2.過載:

同名不同參,與返回值型別無關,與訪問許可權修飾符也無關。

3.總結:

重寫  

「兩同兩小一大」

過載解答:

a 返回值與父類不一致,那麼就不是重寫,而方法名相同,只能是過載,但是過載的引數型別,個數,順序必須有乙個不同

b 和a一樣

c 返回值型別和父類一樣,由於引數不一樣,則是過載。過載需要引數列表不同

d 返回的是啥玩意?

為什麼這裡會有對父類的方法過載?

因為過載是在乙個類裡的,但是由於繼承的關係,子類是繼承了父類的方法的,而此時又對繼承過來的方法進行過載。只不過是沒有顯示出來。

結論: 並沒有重寫foo方法,只不過是c類裡與父類同名的foo方法。

Java 每天來一道面試題

1 下面這段 的輸出結果是什麼?string a helloworld string b hello world system.out.println a b 輸出結果為 true。原因是string對字串的直接相加,會在編譯期進行優化。即hello world在編譯時期,被優化為helloworl...

一道java基礎題

題目 要求隨機產生20個0 100之間的數字,並對這20個數字以10的倍數進行歸類,然後列印。如 10 7 9 5 30 22 25 29 50 49 45 public static void main string args 隨機產生20個0 100之間的數字,並放入list中 return p...

從一道面試看自增運算

include include define adds a a a int main void int i 3,j j adds i printf d n j j adds i printf d n j getchar return 0 輸出為 9 49 c語言對於這種執行的處理不是把i 或 i乙個...