Java中重寫(xiě)和重載的區(qū)別及說(shuō)明
Java中重寫(xiě)和重載的區(qū)別
其實(shí)java中的重寫(xiě)和重載沒(méi)有任何關(guān)系,只是因?yàn)槎加袀€(gè)重字,有些小白就會(huì)對(duì)這兩個(gè)概念產(chǎn)生混淆,所以也就有很多面試官喜歡問(wèn)這個(gè)題目了。
Java中方法的重載和重寫(xiě)都是實(shí)現(xiàn)多態(tài)的方式,區(qū)別在于前者實(shí)現(xiàn)的是編譯時(shí)的多態(tài)性,而后者實(shí)現(xiàn)的是運(yùn)行時(shí)的多態(tài)性。
- 重載發(fā)生在一個(gè)類(lèi)中,同名的方法如果有不同的參數(shù)列表(參數(shù)類(lèi)型不同,參數(shù)個(gè)數(shù)不同或者兩者都不同),則視為重載;
- 重寫(xiě)發(fā)生在子類(lèi)和父類(lèi)之間,重寫(xiě)要求子類(lèi)重寫(xiě)方法和父類(lèi)被重寫(xiě)方法有相同的返回類(lèi)型,比父類(lèi)被重寫(xiě)方法更好訪問(wèn),不能比父類(lèi)被重寫(xiě)方法聲明更多的異常(LSP里氏替換原則)。
- 重載對(duì)返回類(lèi)型沒(méi)有特殊要求。
方法重載的規(guī)則
- 方法名一致(完全相同),參數(shù)列表中參數(shù)的順序,類(lèi)型,個(gè)數(shù)不同。
- 重載與方法的返回值無(wú)關(guān),存在于一個(gè)類(lèi)中。
- 可以拋出不同的異常,可以有不同的修飾符。
方法重寫(xiě)的規(guī)則
- a. 參數(shù)列表必須完全與被重寫(xiě)方法的一致,返回類(lèi)型必須完全與被重寫(xiě)方法的返回類(lèi)型一致。也就是方法的軀殼是一樣的,不同的是方法體里面的內(nèi)容。
- b. 構(gòu)造方法不能被重寫(xiě),聲明為final的方法不能被重寫(xiě),聲明為static的方法不能被重寫(xiě),但是能夠被再次聲明。
- c. 訪問(wèn)權(quán)限不能比父類(lèi)中被重寫(xiě)的方法的訪問(wèn)權(quán)限更低。
- d. 重寫(xiě)的方法能夠拋出任何非強(qiáng)制異常(UncheckedException,也叫非運(yùn)行時(shí)異常),無(wú)論被重寫(xiě)的方法是否拋出異常。但是重寫(xiě)的方法不能拋出新的強(qiáng)制性異常,或者比被重寫(xiě)方法聲明的更廣泛的強(qiáng)制性異常,反之則可以。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java 基于AQS實(shí)現(xiàn)自定義同步器的示例
這篇文章主要介紹了Java 基于AQS實(shí)現(xiàn)自定義同步器的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-03-03
java設(shè)計(jì)模式之代理模式(Porxy)詳解
這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式之代理模式Porxy的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Java系統(tǒng)環(huán)境變量配置全過(guò)程
本文介紹了如何配置Windows系統(tǒng)中的PATH和CLASSPATH環(huán)境變量,以及如何使用這些變量來(lái)運(yùn)行Java程序,步驟包括查看系統(tǒng)屬性、編輯環(huán)境變量、添加路徑、驗(yàn)證設(shè)置等,通過(guò)這些步驟,用戶(hù)可以永久性地保存PATH和CLASSPATH環(huán)境變量的設(shè)置,從而方便地運(yùn)行Java程序2024-11-11
java使用Base64實(shí)現(xiàn)文件加密解密
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)Base64給文件加密、解密,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03
springboot使用校驗(yàn)框架validation校驗(yàn)的示例
這篇文章主要介紹了springboot使用校驗(yàn)框架validation校驗(yàn)的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
SpringMVC中轉(zhuǎn)發(fā)與重定向的區(qū)別淺析
這篇文章主要給大家介紹了關(guān)于SpringMVC中轉(zhuǎn)發(fā)與重定向的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
詳解使用Spring的BeanPostProcessor優(yōu)雅的實(shí)現(xiàn)工廠模式
這篇文章主要介紹了詳解使用Spring的BeanPostProcessor優(yōu)雅的實(shí)現(xiàn)工廠模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Spring?Security配置多個(gè)數(shù)據(jù)源并添加登錄驗(yàn)證碼的實(shí)例代碼
這篇文章主要介紹了Spring?Security配置多個(gè)數(shù)據(jù)源并添加登錄驗(yàn)證碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
spring MVC cors跨域?qū)崿F(xiàn)源碼解析
本文主要介紹了spring MVC cors跨域?qū)崿F(xiàn)源碼解析。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02
Mybatis generator mapper文件覆蓋原文件的示例代碼
這篇文章主要介紹了Mybatis generator mapper文件覆蓋原文件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11

