前言:
比較基礎的概念,只是做一道題突然對這一塊的知識記得不是很牢固,一起複習一下。
overriding:重寫,覆蓋(覆蓋父類的方法)
overloading:過載,以類以統一的方式去處理不同型別資料的一種手段,是多型的一種表現。
來看一題:選哪個不會出錯?
會做的話就直接跳過這一篇吧
(題源:牛客網
)
1.重寫: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()
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乙個...