Overload重載和Override重寫的區別。Overloaded的方法是否可以改變返回值的類型?

Overload是重載的意思,Override是覆蓋的意思,也就是重寫。

重載Overload表示同一個類中可以有多個名稱相同的方法,但這些方法的參數列表各不相同(即參數個數或類型不同)。

重寫Override表示子類中的方法可以與父類中的某個方法的名稱和參數完全相同,通過子類創建的實例對象調用這個方法時,將調用子類中的定義方法,這相當于把父類中定義的那個完全相同的方法給覆蓋了,這也是面向對象編程的多態性的一種表現。子類覆蓋父類的方法時,只能比父類拋出更少的異常,或者是拋出父類拋出的異常的子異常,因為子類可以解決父類的一些問題,不能比父類有更多的問題。子類方法的訪問權限只能比父類的更大,不能更小。如果父類的方法是private類型,那么,子類則不存在覆蓋的限制,相當于子類中增加了一個全新的方法。

至于Overloaded的方法是否可以改變返回值的類型這個問題,要看你倒底想問什么呢?這個題目很模糊。如果幾個Overloaded的方法的參數列表不一樣,它們的返回者類型當然也可以不一樣。但我估計你想問的問題是:如果兩個方法的參數列表完全一樣,是否可以讓它們的返回值不同來實現重載Overload。這是不行的,我們可以用反證法來說明這個問題,因為我們有時候調用一個方法時也可以不定義返回結果變量,即不要關心其返回結果,例如,我們調用map.remove(key)方法時,雖然remove方法有返回值,但是我們通常都不會定義接收返回結果的變量,這時候假設該類中有兩個名稱和參數列表完全相同的方法,僅僅是返回類型不同,java就無法確定編程者倒底是想調用哪個方法了,因為它無法通過返回結果類型來判斷。

?

override可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個方法并且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對接口方法的實現,在接口中一般只是對方法進行了聲明,而我們在實現時,就需要實現接口聲明的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。在覆蓋要注意以下的幾點:

1、覆蓋的方法的標志必須要和被覆蓋的方法的標志完全匹配,才能達到覆蓋的效果;

2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;

3、覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類;

4、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,并沒有對其進行覆蓋。

overload對我們來說可能比較熟悉,可以翻譯為重載,它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入參數來區分這些方法,然后再調用時,VM就會根據不同的參數樣式,來選擇合適的方法執行。在使用重載要注意以下的幾點:

1、在使用重載時只能通過不同的參數樣式。例如,不同的參數類型,不同的參數個數,不同的參數順序(當然,同一方法內的幾個參數類型必須不一樣,例如可以是fun(int,float),但是不能為fun(int,int));

2、不能通過訪問權限、返回類型、拋出的異常進行重載;

3、方法的異常類型和數目不會對重載造成影響;

4、對于繼承來說,如果某一方法在父類中是訪問權限是priavte,那么就不能在子類對其進行重載,如果定義的話,也只是定義了一個新方法,而不會達到重載的效果。

轉載于:https://www.cnblogs.com/jylee/p/8711633.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453064.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453064.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453064.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

web服務器文件管理,web文件管理服務器

web文件管理服務器 內容精選換一換該任務指導用戶在SSL證書管理平臺下載證書。證書狀態為已簽發或托管中。僅支持在證書有效期內,不限次數的下載證書,下載后即可在服務器(華為云的或非華為云的均可)上進行部署。證書請求文件選擇的是系統生成CSR&#xf…

簡單計算器 (關于棧的一種應用)

題目:簡單計算器讀入一個只包含 , -, *, / 的非負整數計算表達式,計算該表達式的值。Input測試輸入包含若干測試用例,每個測試用例占一行,每行不超過200個字符,整數和運算符之間用一個空格分隔。沒有非法表達式。當一行…

python中模運算_Python中的模運算

所謂取模運算&#xff0c;就是計算兩個數相除之后的余數&#xff0c;符號是%。如a % b就是計算a除以b的余數。用數學語言來描述&#xff0c;就是如果存在整數n和m&#xff0c;其中0 < m < b&#xff0c;使得$ a n * b m $&#xff0c;那么$ a \% b a - n * b m $。先…

偉大公司為什么需要技術型領導?

Facebook前工程總監黃易山撰寫了一系列文章&#xff0c;很好地總結了Facebook卓越研發文化中的寶貴經驗。本文是這一系列文章的第五篇&#xff0c;也是最后一篇。 何謂技術型領導 所有從外部聘用的管理人員包括技術部門負責人&#xff0c;都必須能夠編寫代碼&#xff0c;并且…

css樣式變 及實際用法

<html xmlns"http://www.w3.org/1999/xhtml"><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>引入外部樣式</title><link rel" stylesheet" href"home.css&…

服務器部署的參數文檔,服務器參數配置

服務器參數配置 內容精選換一換源端服務器遷移至華為云后&#xff0c;最終將遷移到彈性云服務器上。因此在遷移前&#xff0c;您需要在華為云中創建一個或多個彈性云服務器。進入“彈性云服務器”頁面。關于參數的詳細信息&#xff0c;請參見購買彈性云服務器。Windows系統的目…

擴散法及其改進

擴散法是一種靜態路由算法,每一個輸入的分組都被從除輸入線路之外的所有其它線路上轉發出去.擴散法顯然會產生大量的分組副本,因此必須有一些辦法來抑制無限的轉發.1.一種辦法是在分組頭中攜帶一個跳數計數器,分組每到一個節點其跳數計數器就減1,當計數器為0時分組被丟棄.計數器…

h5頁 點擊返回時關閉_在微信、支付寶、百度錢包實現點擊返回按鈕關閉當前頁面和窗口...

最近在使用微信、支付寶、百度錢包實現網頁支付&#xff0c;對支付成功將自動關閉頁面&#xff0c;對于支付失敗&#xff0c;將顯示錯誤信息。當在錯誤頁面的時候&#xff0c;點擊返回或者Android物理按鍵上一步的時候&#xff0c;將關閉頁面。在微信、支付寶、百度錢包中&…

串操作指令

串操作指令可以方便對一組連續的數據進行操作。串操作后自動根據DF標志位修改ESI和EDI&#xff0c;DF 0時&#xff0c;ESI&#xff0c;EDI遞增&#xff0c;DF 1時&#xff0c;ESI&#xff0c;EDI遞減。串操作指令有2組&#xff0c;1組實現數據串傳送&#xff0c;另1組實現數據…

IS-IS基本配置

實驗內容&#xff1a;現在網絡中有4臺路由器&#xff0c;用戶希望利用這4臺路由器通過IS-IS協議實現網絡互聯&#xff0c;并且因為R1和R2性能相對較低&#xff0c;所以還要使這兩臺路由器處理的數據信息相對較少。 網絡拓撲&#xff1a; 實驗分析&#xff1a; 根據題意可知R1和…

高并發高流量網站架構

Web2.0的興起&#xff0c;掀起了互聯網新一輪的網絡創業大潮。以用戶為導向的新網站建設概念&#xff0c;細分了網站功能和用戶群&#xff0c;不僅成功的造就了一大批新生的網站&#xff0c;也極大的方便了上網的人們。但Web2.0以用戶為導向的理念&#xff0c;使得新生的網站有…

多處理機的進程調度方式

一.自調度方式 二.成組調度方式 三.專用處理機分配方式

枚舉類型用法_Mybatis-plus常見用法總結三

前面已經介紹了Mybatis-plus基本用法&#xff0c;今天為大家分享一些Mybatis-plus高級應用邏輯刪除自動注入枚舉類型處理Sql注入器多租戶表結構CREATE TABLE sys_role ( id varchar(64) NOT NULL COMMENT 主鍵, code varchar(64) NOT NULL DEFAULT COMMENT 角色編碼, name …

NOIP 2011 Day2

tags: 貪心模擬NOIP categories:信息學競賽總結計算系數 Solution 根據二項式定理,\[ \begin{align} (ab)^n\sum_{k0}^nC_{n}^{k}a^kb^{n-k} \end{align} \] 那么\[ \begin{align}(axby)^k&\sum_{p0}^kC_{k}^p(ax)^p(by)^{k-p}\\ &\sum_{p0}^k(C_{k}^pa^pb^{k-p})x^py^…

VS Code的golang開發配置 之 代碼提示

之前用VS Code的時候&#xff0c;發現自己的代碼的提示一直不好&#xff0c;換用JetBrain的Goland的代碼提示是好了&#xff0c;但是比較占用資源。在網上找了一些資料&#xff0c;發現很多人也是遇到第三方或者自己的代碼無法提示的情況&#xff0c;但是都沒有下文了。后來發現…

使用oprofile分析性能瓶頸

使用oprofile分析性能瓶頸 1. 概述oprofile 是 Linux 平臺上&#xff0c;類似 INTEL VTune 的一個功能強大的性能分析工具。其支持兩種采樣(sampling)方式&#xff1a;基于事件的采樣(event based)和基于時間的采樣(time based)。基于事件的采樣是oprofile只記錄特定事件&#…

什么是死鎖

死鎖是多個進程在運行過程中因競爭資源時產生的一種僵局。 各并發資源彼此等待對方擁有的資源&#xff0c;且在得到對方資源前不釋放自己的資源。

python數據工程師 面試題_阿里P7工程師耗時兩天整理的292道python大廠面試題,內含解析!...

前言相對于python大家應該都不會陌生吧&#xff01;現在java跟python可以算的是勢均力敵了&#xff0c;所以現在學習python 的小伙伴也是越來越多了&#xff0c;可是學完之后就能找到稱心如意的工作了嗎&#xff1f;很多小伙伴學習Python的時候感覺很簡單&#xff0c;但是到了去…

數組復制

在Java里面,可以用復制語句”AB”給基本類型的數據傳遞值,但是如果A,B是兩個同類型的數組&#xff0c;復制就相當于將一個數組變量的引用傳遞給另一個數組&#xff1b;如果一個數組發生改變&#xff0c;那么引用同一數組的變量也要發生改變。 1.使用FOR循環,將數組的每個元素復…