JAVA中重寫(xiě)(Override)與重載(Overload)的相關(guān)示例
前言
關(guān)于JAVA,我們也已經(jīng)學(xué)習(xí)過(guò)一段時(shí)間了,今天我們來(lái)學(xué)習(xí)一下在JAVA中方法的重載與重寫(xiě)。
方法重載(Overload)
方法重載(overload)是指在一個(gè)類(lèi)中定義多個(gè)同名但參數(shù)列表不同的方法。Java編譯器會(huì)根據(jù)方法調(diào)用時(shí)傳遞的參數(shù)來(lái)選擇調(diào)用哪個(gè)方法。方法重載的優(yōu)勢(shì)在于可以為相似功能的方法提供統(tǒng)一的方法名,方便代碼編寫(xiě)和維護(hù)。
重載的規(guī)則
- 方法名必須相同。
- 參數(shù)列表必須不同(個(gè)數(shù)、類(lèi)型、順序)。
- 方法的返回類(lèi)型可以相同也可以不同。
- 不能僅依據(jù)返回類(lèi)型的不同來(lái)重載方法。
示例代碼
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ù)類(lèi)型和數(shù)量選擇正確的方法進(jìn)行調(diào)用。例如,add(1,2)會(huì)調(diào)用第一個(gè)add方法,add(1.0,2.0)會(huì)調(diào)用第二個(gè)add方法。
方法重寫(xiě)(Override)
在 Java 中,方法重寫(xiě)是指子類(lèi)覆蓋了父類(lèi)中具有相同名稱、參數(shù)列表和返回類(lèi)型的方法。重寫(xiě)方法的目的是為了改變方法的實(shí)現(xiàn),讓子類(lèi)的方法能夠滿足自己的需求,并且能夠替換父類(lèi)中的同名方法。
重寫(xiě)的規(guī)則
- 方法名稱、參數(shù)列表和返回類(lèi)型必須與父類(lèi)中的方法相同。
- 子類(lèi)中重寫(xiě)的方法的訪問(wèn)修飾符不能低于父類(lèi)中被重寫(xiě)的方法的訪問(wèn)修飾符。
- 子類(lèi)中重寫(xiě)的方法不能拋出比父類(lèi)中被重寫(xiě)的方法聲明的更多的異常類(lèi)型。
- 子類(lèi)中無(wú)法重寫(xiě)父類(lèi)中被聲明為 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 對(duì)象 Animal b = new Dog(); // Dog 對(duì)象 a.move(); // 執(zhí)行 Animal 類(lèi)的方法 b.move(); // 執(zhí)行 Dog 類(lèi)的方法 } }
在上面的例子中,Animal 類(lèi)有一個(gè) move() 方法。在 Dog 類(lèi)中,我們重寫(xiě)了這個(gè)方法,并且定義了新的實(shí)現(xiàn)方式。在 main() 方法中,我們創(chuàng)建了一個(gè) Animal 類(lèi)型的對(duì)象和一個(gè) Dog 類(lèi)型的對(duì)象。通過(guò)調(diào)用它們的 move() 方法,我們可以看到,當(dāng)調(diào)用 Animal 類(lèi)型的對(duì)象時(shí),執(zhí)行的是 Animal 類(lèi)中的方法,而當(dāng)調(diào)用 Dog 類(lèi)型的對(duì)象時(shí),執(zhí)行的是 Dog 類(lèi)中的方法。這就是方法重寫(xiě)的作用。
方法重載與方法重寫(xiě)的區(qū)別
方法重載指在同一個(gè)類(lèi)中定義多個(gè)同名方法,但它們的參數(shù)列表不同(參數(shù)類(lèi)型、參數(shù)個(gè)數(shù)、參數(shù)順序不同)。Java 編譯器會(huì)根據(jù)不同的參數(shù)列表來(lái)區(qū)分和調(diào)用不同的方法。在方法重載中,方法名相同,但參數(shù)列表不同,返回類(lèi)型可以相同也可以不同。
方法重載是在同一個(gè)類(lèi)中出現(xiàn),方法名相同,但參數(shù)列表不同,方法重寫(xiě)是在父類(lèi)和子類(lèi)之間出現(xiàn),方法名、參數(shù)列表和返回值類(lèi)型必須相同。
總結(jié)
到此這篇關(guān)于JAVA中重寫(xiě)(Override)與重載(Overload)的文章就介紹到這了,更多相關(guān)JAVA 重寫(xiě)與重載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Spring統(tǒng)一異常處理及說(shuō)明
這篇文章主要介紹了關(guān)于Spring統(tǒng)一異常處理及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09mybatis二級(jí)緩存的實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了mybatis二級(jí)緩存的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Springmvc DispatcherServlet原理及用法解析
這篇文章主要介紹了Springmvc DispatcherServlet原理及用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(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í)行。下面通過(guò)實(shí)現(xiàn)代碼給大家介紹Java關(guān)鍵字finally相關(guān)知識(shí),需要的的朋友參考下吧2017-04-04SpringBoot實(shí)現(xiàn)版本升級(jí)到2.7.18
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)版本升級(jí)到2.7.18全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08SpringBoot集成Flyway進(jìn)行數(shù)據(jù)庫(kù)版本遷移管理的步驟
這篇文章主要介紹了SpringBoot集成Flyway進(jìn)行數(shù)據(jù)庫(kù)版本遷移管理的步驟,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot框架,感興趣的朋友可以了解下2021-03-03