① 在Java中,方法重寫和方法重載有什麼區別
方法重載是讓類以統一的方式處理不同類型數據的一種手段。多個同名函數同時存在,具有不同的參數個數/類型。重載Overloading是一個類中多態性的一種表現。
Java的方法重載,就是在類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法, 這就是多態性。
重載的時候,方法名要一樣,但是參數類型和個數不一樣,返回值類型可以相同也可以不相同。無法以返回型別作為重載函數的區分標准。
父類與子類之間的多態性,對父類的函數進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。
若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數表,則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。
子類函數的訪問修飾許可權不能少於父類的;
備註:因為最佳答案出現一個小問題,所以我參考了一下博客結合自己所學進行了回答糾錯。如有錯誤請大家積極評論糾錯,幫助更多的人。
② 方法重載和重寫的區別
Overload是重載的意思,表示在同一個類中,允許存在一個以上的同名函數,只要他們的參數個數或者參數類型不同即可,Override是覆蓋的意思,也就是重寫,它與返回值類型無關,只看參數列表,兩者不同主要體現在:目的不同、范圍不同、參數不同、多態性不同、返回類型不同。
1、目的不同
overload用於增加程序的可讀性(做法不同,但是做的同一事情)。 override用於提供其超級類已經提供的方法的特定實現。
2、范圍不同
overload 在相同的類范圍內內執行。 override發生在兩類具有繼承(繼承)的關系。
3、參數不同
overload參數必須不同。 override參數必須相同。
4、多態性不同
overload 靜態多態,調用的函數在編譯時被選中。 override 是運行時多態性的。
5、返回類型不同
overload中可以相同或不同。但你必須改變參數。 override必須是相同的或協變的。
③ 方法的重載與重寫
1、重載: 方法名相同,參數列表不同 。 重載是一個類裡面,寫了多了同名的方法,各個方法的返回值類型可以不一樣。要注意區分重載方法可以通過參數列表的個數,類型和順序。但是不推薦用順序來進行重載,這會讓代碼可讀性極差。
2、重寫: 也叫覆蓋,指在子類中定義一個與父類中方法同名同參數列表的方法。因為子類會繼承父類的方法,而重寫就是將從父類繼承過來的方法重新定義一次,重新填寫方法中的代碼。重寫一般是指父類和子類之間,子類重寫了父類的一個方法,當然方法名是一樣的,而且不能改變父類方法的返回值,比如說父類是返回String,子類重寫了這個方法,想返回一個int,那是不行的,也得返回String。
④ java方法重載和方法重寫的區別
1,方法重載是在一個類中他需要滿足三個條件
①同一類
②同一方法名,
③不同的形參列表,指的是
順序,類型,數量
2,方法的重寫是建立在具有繼承關系的父子類內
①重寫必須繼承,重載則不用
②重寫的方法名,參數數目相同,參數類型必須一致
③重寫的方法不能拋出比父類更大的異常
④重寫的方法不能比父類的訪問許可權更加嚴格
⑤ java—重寫方法的一個疑問
你說的屬於方法重載,重載的方法返回值類型可以和父類不一樣,方法重寫必須和父類一樣,帶new關鍵詞說明新建了一個對象。
⑥ java中方法重載和方法重寫的區別
方法重載(overloading),指的是同一個類中,兩個方法的聲明部分,包括名字,返回值類型完全相同,只有參數個數或者參數類型不同,這叫做方法重載。
方法重寫(orverriding),指的是一個類,他的父類中有一個方法A,他在本類中有寫了一個方法A, 而且是名字返回值類型,以及參數完全相同,僅僅是方法體不同。這叫做方法重寫。
概括來說,方法重載是發生在一個類中,兩個同名方法之間的事情。而方法重寫,是發生在父類與子類中,兩個聲明完全相同的兩個方法之間。
⑦ 什麼是方法的重寫、重載
重寫是子類的方法覆蓋父類的方法,要求方法名和參數都相同
重載是在同一個類中的兩個或兩個以上的方法,擁有相同的方法名,但是參數卻不相同,方法體也不相同,最常見的重載的例子就是類的構造函數,可以參考API幫助文檔看看類的構造方法
⑧ 方法的重寫與重載的區別
一、方法重寫(0veriding)
在Java程序中,類的繼承關系可以產生一個子類,子類繼承父類,它具備了父類所有的特徵,繼承了父類所有的方法和變數。
子類可以定義新的特徵,當子類需要修改父類的一些方法進行擴展,增大功能,程序設計者常常把這樣的一種操作方法稱為重寫,也叫稱為覆寫或覆蓋。
重寫體現了Java優越性,重寫是建立在繼承關繫上,它使語言結構更加豐富。在Java中的繼承中,子類既可以隱藏和訪問父類的方法,也可以覆蓋繼承父類的方法。
在Java中覆蓋繼承父類的方法就是通過方法的重寫來實現的。所謂方法的重寫是指子類中的方法與父類中繼承的方法有完全相同的返回值類型、方法名、參數個數以及參數類型。
這樣,就可以實現對父類方法的覆蓋。如果子類將父類中的方法重寫了,調用的時候肯定是調用被重寫過的方法,那麼如果現在一定要調用父類中的方法該怎麼辦呢?
此時,通過使用super關鍵就可以實現這個功能,super關鍵字可以從子類訪問父類中的內容,如果要訪問被重寫過的方法,使用「super.方法名(參數列表)」的形式調用。
如果要使用super關鍵字不一定非要在方法重寫之後使用,也可以明確地表示某個方法是從父類中繼承而來的。使用super只是更加明確的說,要從父類中查找,就不在子類查找了。
二、重寫規則
在重寫方法時,需要遵循以下的規則:
(一) 父類方法的參數列表必須完全與被子類重寫的方法的參數列表相同,否則不能稱其為重寫而是重載。
(二) 父類的返回類型必須與被子類重寫的方法返回類型相同,否則不能稱其為重寫而是重載。..
(三) Java中規定,被子類重寫的方法不能擁有比父類方法更加嚴格的訪問許可權。編寫過Java程序的人就知道,
父類中的方法並不是在任何情況下都可以重寫的,當父類中方法的訪問許可權修飾符為private時,該方法只能被自己的類訪問,
不能被外部的類訪問,在子類是不能被重寫的。如果定義父類的方法為public,在子類定義為private,程序運行時就會報錯。
(四) 由於父類的訪問許可權修飾符的限制一定要大於被子類重寫方法的訪問許可權修飾符,而private許可權最小。
所以如果某一個方法在父類中的訪問許可權是private,那麼就不能在子類中對其進行重寫。如果重新定義,也只是定義了一個新的方法,不會達到重寫的效果。
(五) 在繼承過程中如果父類當中的方法拋出異常,那麼在子類中重寫父類的該方法時,也要拋出異常,
而且拋出的異常不能多於父類中拋出的異常(可以等於父類中拋出的異常)。換句話說,重寫方法一定不能拋出新的檢查異常,
或者比被重寫方法聲明更加寬泛的檢查型異常。例如,父類的一個方法申明了一個檢查異常IOException,在重寫這個方法時就不能拋出Exception,
只能拋出IOException的子類異常,可以拋出非檢查異常。同樣的道理,如果子類中創建了一個成員變數,
而該變數和父類中的一個變數名稱相同,稱作變數重寫或屬性覆蓋。但是此概念一般很少有人去研究它,因為意義不大。
三、方法重載(Overloading)
方法重載是讓類以統一的方式處理不同類型數據的一種手段。調用方法時通過傳遞給它們的不同個數和類型的參數來決定具體使用哪個方法,這就是多態性。
所謂方法重載是指在一個類中,多個方法的方法名相同,但是參數列表不同。參數列表不同指的是參數個數、參數類型或者參數的順序不同。
方法的重載在實際應用中也會經常用到。不僅是一般的方法,構造方法也可以重載。
在方法重載時,方法之間需要存在一定的聯系,因為這樣可以提高程序的可讀性,一般只重載功能相似的方法。
重載是指我們可以定義一些名稱相同的方法,通過定義不同的參數來區分這些方法,然後再調用時,Java虛擬機就會根據不同的參數列表來選擇合適的方法執行
。也就是說,當一個重載方法被調用時,Java用參數的類型或個數來決定實際調用的重載方法。因此,每個重載方法的參數的類型或個數必須是不同。
雖然每個重載方法可以有不同的返回類型,但返回類型並不足以區分所使用的是哪個方法。
當Java調用一個重載方法是,參數與調用參數匹配的方法被執行。在使用重載要注意以下的幾點:
1.在使用重載時只能通過不同的參數列表,必須具有不同的參數列表。
2.不能通過訪問許可權、返回類型、拋出的異常進行重載。
3.方法的異常類型和數目不會對重載造成影響。
4.可以有不同的返回類型,只要參數列表不同就可以了。
5.可以有不同的訪問修飾符。
6.可以拋出不同的異常。