JAVA中重寫(Override)與重載(Overload)的相關(guān)示例
前言
關(guān)于JAVA,我們也已經(jīng)學(xué)習(xí)過一段時(shí)間了,今天我們來學(xué)習(xí)一下在JAVA中方法的重載與重寫。
方法重載(Overload)
方法重載(overload)是指在一個(gè)類中定義多個(gè)同名但參數(shù)列表不同的方法。Java編譯器會(huì)根據(jù)方法調(diào)用時(shí)傳遞的參數(shù)來選擇調(diào)用哪個(gè)方法。方法重載的優(yōu)勢在于可以為相似功能的方法提供統(tǒng)一的方法名,方便代碼編寫和維護(hù)。
重載的規(guī)則
- 方法名必須相同。
- 參數(shù)列表必須不同(個(gè)數(shù)、類型、順序)。
- 方法的返回類型可以相同也可以不同。
- 不能僅依據(jù)返回類型的不同來重載方法。
示例代碼
public class Calculator { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; } }
在這個(gè)示例中,我們定義了三個(gè)名為add的方法,它們的參數(shù)列表不同。當(dāng)需要調(diào)用add方法時(shí),Java編譯器會(huì)根據(jù)傳入的參數(shù)類型和數(shù)量選擇正確的方法進(jìn)行調(diào)用。例如,add(1,2)會(huì)調(diào)用第一個(gè)add方法,add(1.0,2.0)會(huì)調(diào)用第二個(gè)add方法。
方法重寫(Override)
在 Java 中,方法重寫是指子類覆蓋了父類中具有相同名稱、參數(shù)列表和返回類型的方法。重寫方法的目的是為了改變方法的實(shí)現(xiàn),讓子類的方法能夠滿足自己的需求,并且能夠替換父類中的同名方法。
重寫的規(guī)則
- 方法名稱、參數(shù)列表和返回類型必須與父類中的方法相同。
- 子類中重寫的方法的訪問修飾符不能低于父類中被重寫的方法的訪問修飾符。
- 子類中重寫的方法不能拋出比父類中被重寫的方法聲明的更多的異常類型。
- 子類中無法重寫父類中被聲明為 final 的方法。
示例代碼
class Animal { public void move() { System.out.println("動(dòng)物可以移動(dòng)"); } } class Dog extends Animal { public void move() { System.out.println("狗可以跑和走"); } } public class TestDog { public static void main(String args[]) { Animal a = new Animal(); // Animal 對象 Animal b = new Dog(); // Dog 對象 a.move(); // 執(zhí)行 Animal 類的方法 b.move(); // 執(zhí)行 Dog 類的方法 } }
在上面的例子中,Animal 類有一個(gè) move() 方法。在 Dog 類中,我們重寫了這個(gè)方法,并且定義了新的實(shí)現(xiàn)方式。在 main() 方法中,我們創(chuàng)建了一個(gè) Animal 類型的對象和一個(gè) Dog 類型的對象。通過調(diào)用它們的 move() 方法,我們可以看到,當(dāng)調(diào)用 Animal 類型的對象時(shí),執(zhí)行的是 Animal 類中的方法,而當(dāng)調(diào)用 Dog 類型的對象時(shí),執(zhí)行的是 Dog 類中的方法。這就是方法重寫的作用。
方法重載與方法重寫的區(qū)別
方法重載指在同一個(gè)類中定義多個(gè)同名方法,但它們的參數(shù)列表不同(參數(shù)類型、參數(shù)個(gè)數(shù)、參數(shù)順序不同)。Java 編譯器會(huì)根據(jù)不同的參數(shù)列表來區(qū)分和調(diào)用不同的方法。在方法重載中,方法名相同,但參數(shù)列表不同,返回類型可以相同也可以不同。
方法重載是在同一個(gè)類中出現(xiàn),方法名相同,但參數(shù)列表不同,方法重寫是在父類和子類之間出現(xiàn),方法名、參數(shù)列表和返回值類型必須相同。
總結(jié)
到此這篇關(guān)于JAVA中重寫(Override)與重載(Overload)的文章就介紹到這了,更多相關(guān)JAVA 重寫與重載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springmvc DispatcherServlet原理及用法解析
這篇文章主要介紹了Springmvc DispatcherServlet原理及用法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09詳解全局事務(wù)注解@GlobalTransactional的識(shí)別
這篇文章主要為大家介紹了詳解全局事務(wù)注解@GlobalTransactional的識(shí)別源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Java關(guān)鍵字finally_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
java關(guān)鍵字finally不管是否出現(xiàn)異常,finally子句總是在塊完成之前執(zhí)行。下面通過實(shí)現(xiàn)代碼給大家介紹Java關(guān)鍵字finally相關(guān)知識(shí),需要的的朋友參考下吧2017-04-04SpringBoot實(shí)現(xiàn)版本升級到2.7.18
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)版本升級到2.7.18全過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08SpringBoot集成Flyway進(jìn)行數(shù)據(jù)庫版本遷移管理的步驟
這篇文章主要介紹了SpringBoot集成Flyway進(jìn)行數(shù)據(jù)庫版本遷移管理的步驟,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot框架,感興趣的朋友可以了解下2021-03-03