java重載與重寫的差別是什麼
區別:1、重載實作的是編譯時的多型性,而重寫實作的是執行時期的多型性。 2.重載發生在一個類別中,同名的方法的參數列表要不同;而重寫發生在子類別與父類別之間,重寫方法的重寫方法要相同。 3.重載方法的回傳類型可以修改,重寫方法不能。 4.重載方法的異常可以修改,重寫方法的異常可以減少或刪除,一定不能拋出新的或更廣的異常。 5.重載方法的存取可以修改,而重寫方法的存取一定不能做更嚴格的限制。
本教學操作環境:windows7系統、java8版、DELL G3電腦。
重寫(Override)
從字面上看,重寫就是 重新寫一遍的意思。其實就是在子類別中把父類別本身有的方法重新寫一遍。子類別繼承了父類別原有的方法,但有時子類別並不想原封不動的繼承父類別中的某個方法,所以在方法名,參數列表,返回類型(除過子類別中方法的回傳值是父類別中方法傳回值的子類別時)都相同的情況下, 對方法體進行修改或重寫,這就是重寫。但要注意子類別函數的存取修飾權限不能少於父類別的。
例如:
public class Father { public static void main(String[] args) { // TODO Auto-generated method stub Son s = new Son(); s.sayHello(); } public void sayHello() { System.out.println("Hello"); } } class Son extends Father{ @Override public void sayHello() { // TODO Auto-generated method stub System.out.println("hello by "); } }
重寫總結:
1.發生在父類別與子類別之間
2.方法名,參數列表,返回類型(除過子類別中方法的返回類型是父類別中返回類型的子類別)必須相同
3.存取修飾符的限制一定大於被重寫方法的存取修飾符(public>protected>default>private)
4.重寫方法一定不能拋出新的檢查異常或比被重寫方法申明更廣泛的檢查類型例外
重載(Overload)
在一個類別中,同名的方法如果有不同的參數列表(參數類型不同、參數個數不同甚至是參數順序不同)則視為重載。同時,重載對返回類型沒有要求,可以相同也可以不同,但不能透過傳回類型是否相同來判斷重載。
例如:
public class Father { public static void main(String[] args) { // TODO Auto-generated method stub Father s = new Father(); s.sayHello(); s.sayHello("wintershii"); } public void sayHello() { System.out.println("Hello"); } public void sayHello(String name) { System.out.println("Hello" + " " + name); } }
重載總結:
1.重載Overload是一個類別中多型性的一種表現
2.重載要求同名方法的參數列表不同(參數類型,參數個數甚至是參數順序)
3.重載的時候,返回值類型可以相同也可以不相同。無法以返回類型作為重載函數的區分標準
面試時,問:重載(Overload)和重寫(Override)的區別?
答案:方法的重載和重寫都是實現多態的方式,差別在於前者實現的是編譯時的多態性,而後者實現的是運行時的多態性。
重載發生在一個類別中,同名的方法如果有不同的參數列表(參數類型不同、參數個數不同或二者都不同)則視為重載;重寫發生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的參數列表,有兼容的返回類型,比父類被重寫方法更好訪問,不能比父類被重寫方法宣告更多的異常(里氏代換原則)。
重載對傳回類型沒有特殊的要求,不能根據回傳類型進行區分。
區別點 | 重載方法 | #重寫方法 |
---|---|---|
參數清單 | 必須修改 | 一定不能修改 |
返回類型 | 可以修改 | 一定不能修改 |
異常 | 可以修改 | 可以可以減少或刪除,一定不能拋出新的或更廣的例外 |
訪問 | 可以修改 | 一定不能做更嚴格的限制(可以降低限制) |
總結
方法的重寫(Overriding)和重載(Overloading)是java多態性的不同表現,重寫是父類別與子類別之間多態性性的一種表現,重載可以理解成多態的具體表現。
(1)方法重載是一個類別中定義了多個方法名稱相同,而他們的參數的數量不同或數量相同而類型和次序不同,則稱為方法的重載(Overloading)。
(2)方法重寫是在子類別存在方法與父類別的方法的名字相同,而且參數的個數與型別一樣,傳回值也一樣的方法,就稱為重寫(Overriding)。
(3)方法重載是一個類別的多態性表現,而方法重寫是子類別與父類別的一種多態性表現。
更多程式設計相關知識,請造訪:程式設計教學! !
以上是java重載與重寫的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4
