Java中重寫和重載的區(qū)別及說明
Java中重寫和重載的區(qū)別
其實java中的重寫和重載沒有任何關系,只是因為都有個重字,有些小白就會對這兩個概念產(chǎn)生混淆,所以也就有很多面試官喜歡問這個題目了。
Java中方法的重載和重寫都是實現(xiàn)多態(tài)的方式,區(qū)別在于前者實現(xiàn)的是編譯時的多態(tài)性,而后者實現(xiàn)的是運行時的多態(tài)性。
- 重載發(fā)生在一個類中,同名的方法如果有不同的參數(shù)列表(參數(shù)類型不同,參數(shù)個數(shù)不同或者兩者都不同),則視為重載;
- 重寫發(fā)生在子類和父類之間,重寫要求子類重寫方法和父類被重寫方法有相同的返回類型,比父類被重寫方法更好訪問,不能比父類被重寫方法聲明更多的異常(LSP里氏替換原則)。
- 重載對返回類型沒有特殊要求。
方法重載的規(guī)則
- 方法名一致(完全相同),參數(shù)列表中參數(shù)的順序,類型,個數(shù)不同。
- 重載與方法的返回值無關,存在于一個類中。
- 可以拋出不同的異常,可以有不同的修飾符。
方法重寫的規(guī)則
- a. 參數(shù)列表必須完全與被重寫方法的一致,返回類型必須完全與被重寫方法的返回類型一致。也就是方法的軀殼是一樣的,不同的是方法體里面的內(nèi)容。
- b. 構造方法不能被重寫,聲明為final的方法不能被重寫,聲明為static的方法不能被重寫,但是能夠被再次聲明。
- c. 訪問權限不能比父類中被重寫的方法的訪問權限更低。
- d. 重寫的方法能夠拋出任何非強制異常(UncheckedException,也叫非運行時異常),無論被重寫的方法是否拋出異常。但是重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更廣泛的強制性異常,反之則可以。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
springboot使用校驗框架validation校驗的示例
這篇文章主要介紹了springboot使用校驗框架validation校驗的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02
SpringMVC中轉(zhuǎn)發(fā)與重定向的區(qū)別淺析
這篇文章主要給大家介紹了關于SpringMVC中轉(zhuǎn)發(fā)與重定向的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12
詳解使用Spring的BeanPostProcessor優(yōu)雅的實現(xiàn)工廠模式
這篇文章主要介紹了詳解使用Spring的BeanPostProcessor優(yōu)雅的實現(xiàn)工廠模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
Spring?Security配置多個數(shù)據(jù)源并添加登錄驗證碼的實例代碼
這篇文章主要介紹了Spring?Security配置多個數(shù)據(jù)源并添加登錄驗證碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
spring MVC cors跨域?qū)崿F(xiàn)源碼解析
本文主要介紹了spring MVC cors跨域?qū)崿F(xiàn)源碼解析。具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02
Mybatis generator mapper文件覆蓋原文件的示例代碼
這篇文章主要介紹了Mybatis generator mapper文件覆蓋原文件,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11

