java方法的重载与覆盖的返回值类型
下面是運行結果:
this is ?overRiding?
this is overLoading return String
this is overLoading return int
有以上程序可以知道,方法的重載是可以改變返回值類型的,但是尚不能說明方法的覆蓋是否可以改變返回值類型,現在修改A類中?riding()方法的返回值類型為int,
public int riding(){
System.out.println("this is ?overRiding ");
}
此時會有如下的錯誤:
由此可知,方法的覆蓋是不允許修改返回值類型的。
以上測試程序運行在JDK1.5版本。
我對此的解釋為:
方法的重載是根據函數的參數列表來決定的,即:參數列表的個數,類型,順序三個方面;
對于其返回值類型,就是改變了也不會有影響,因為你不可能寫成參數類表相同(個數,類型,順序)的方法重載,因為那根不就不是重載。所以返回值類型也就不能作為程序運行時選擇函數的一個標準,因此返回值類型也就沒了對函數選擇時的影響。
方法的覆蓋不僅根據函數的參數列表還要根據返回值類型,因為覆蓋的方法的標志必須要和被覆蓋的方法的標志完全匹配,才能達到覆蓋的效果;
覆蓋時還有“類型的提升”這一點,具體可以參考
http://topic.csdn.net/u/20110318/16/0acfac41-4ce4-4a1e-b3e3-9b4af265c691.html
總結如下:
方法覆蓋必須滿足下列條件
(1) 子類的方法的名稱及參數必須和所覆蓋的方法相同
(2) 子類的方法返回類型必須和所覆蓋的方法相同
重載方法必須滿足下列條件
(1) 方法名必須相同
(2) 方法的參數簽名必須相同
(3) 方法的返回類型和方法的修飾符可以不相同
總結
以上是生活随笔為你收集整理的java方法的重载与覆盖的返回值类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【深度学习】新人如何入门Pytorch的
- 下一篇: 播放器之争:VLC VS SmartPl