java方法的重载与覆盖的返回值类型
下面是運(yùn)行結(jié)果:
this is ?overRiding?
this is overLoading return String
this is overLoading return int
有以上程序可以知道,方法的重載是可以改變返回值類型的,但是尚不能說(shuō)明方法的覆蓋是否可以改變返回值類型,現(xiàn)在修改A類中?riding()方法的返回值類型為int,
public int riding(){
System.out.println("this is ?overRiding ");
}
此時(shí)會(huì)有如下的錯(cuò)誤:
由此可知,方法的覆蓋是不允許修改返回值類型的。
以上測(cè)試程序運(yùn)行在JDK1.5版本。
我對(duì)此的解釋為:
方法的重載是根據(jù)函數(shù)的參數(shù)列表來(lái)決定的,即:參數(shù)列表的個(gè)數(shù),類型,順序三個(gè)方面;
對(duì)于其返回值類型,就是改變了也不會(huì)有影響,因?yàn)槟悴豢赡軐?xiě)成參數(shù)類表相同(個(gè)數(shù),類型,順序)的方法重載,因?yàn)槟歉痪筒皇侵剌d。所以返回值類型也就不能作為程序運(yùn)行時(shí)選擇函數(shù)的一個(gè)標(biāo)準(zhǔn),因此返回值類型也就沒(méi)了對(duì)函數(shù)選擇時(shí)的影響。
方法的覆蓋不僅根據(jù)函數(shù)的參數(shù)列表還要根據(jù)返回值類型,因?yàn)?span style="font-family:simsun; line-height:23px">覆蓋的方法的標(biāo)志必須要和被覆蓋的方法的標(biāo)志完全匹配,才能達(dá)到覆蓋的效果;
覆蓋時(shí)還有“類型的提升”這一點(diǎn),具體可以參考
http://topic.csdn.net/u/20110318/16/0acfac41-4ce4-4a1e-b3e3-9b4af265c691.html
總結(jié)如下:
方法覆蓋必須滿足下列條件
(1) 子類的方法的名稱及參數(shù)必須和所覆蓋的方法相同
(2) 子類的方法返回類型必須和所覆蓋的方法相同
重載方法必須滿足下列條件
(1) 方法名必須相同
(2) 方法的參數(shù)簽名必須相同
(3) 方法的返回類型和方法的修飾符可以不相同
總結(jié)
以上是生活随笔為你收集整理的java方法的重载与覆盖的返回值类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【深度学习】新人如何入门Pytorch的
- 下一篇: 【深度学习】Transformer 向轻