Java中重寫和重載的區(qū)別及說明
Java中重寫和重載的區(qū)別
其實(shí)java中的重寫和重載沒有任何關(guān)系,只是因?yàn)槎加袀€(gè)重字,有些小白就會對這兩個(gè)概念產(chǎn)生混淆,所以也就有很多面試官喜歡問這個(gè)題目了。
Java中方法的重載和重寫都是實(shí)現(xiàn)多態(tài)的方式,區(qū)別在于前者實(shí)現(xiàn)的是編譯時(shí)的多態(tài)性,而后者實(shí)現(xiàn)的是運(yùn)行時(shí)的多態(tài)性。
- 重載發(fā)生在一個(gè)類中,同名的方法如果有不同的參數(shù)列表(參數(shù)類型不同,參數(shù)個(gè)數(shù)不同或者兩者都不同),則視為重載;
- 重寫發(fā)生在子類和父類之間,重寫要求子類重寫方法和父類被重寫方法有相同的返回類型,比父類被重寫方法更好訪問,不能比父類被重寫方法聲明更多的異常(LSP里氏替換原則)。
- 重載對返回類型沒有特殊要求。
方法重載的規(guī)則
- 方法名一致(完全相同),參數(shù)列表中參數(shù)的順序,類型,個(gè)數(shù)不同。
- 重載與方法的返回值無關(guān),存在于一個(gè)類中。
- 可以拋出不同的異常,可以有不同的修飾符。
方法重寫的規(guī)則
- a. 參數(shù)列表必須完全與被重寫方法的一致,返回類型必須完全與被重寫方法的返回類型一致。也就是方法的軀殼是一樣的,不同的是方法體里面的內(nèi)容。
- b. 構(gòu)造方法不能被重寫,聲明為final的方法不能被重寫,聲明為static的方法不能被重寫,但是能夠被再次聲明。
- c. 訪問權(quán)限不能比父類中被重寫的方法的訪問權(quán)限更低。
- d. 重寫的方法能夠拋出任何非強(qiáng)制異常(UncheckedException,也叫非運(yùn)行時(shí)異常),無論被重寫的方法是否拋出異常。但是重寫的方法不能拋出新的強(qiáng)制性異常,或者比被重寫方法聲明的更廣泛的強(qiáng)制性異常,反之則可以。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA使用Tomcat運(yùn)行web項(xiàng)目教程分享
在非Spring Boot項(xiàng)目中運(yùn)行Nacos示例,需要手動配置Tomcat容器,本文介紹了如何在IDEA中配置Tomcat,并詳細(xì)解決了配置過程中可能遇到的異常情況,步驟包括修改IDEA項(xiàng)目結(jié)構(gòu)、添加Web模塊、配置Artifacts和Tomcat Server2024-10-10Java的線程池ThreadPoolExecutor及多種線程池實(shí)現(xiàn)詳解
這篇文章主要介紹了Java的線程池ThreadPoolExecutor及多種線程池實(shí)現(xiàn)詳解,ThreadPoolExecutor 使用 int 的高 3 位來表示線程池狀態(tài),低 29 位表示線程數(shù)量,之所以將信息存儲在一個(gè)變量中,是為了保證原子性,需要的朋友可以參考下2024-01-01可觀測性-Metrics-數(shù)據(jù)庫連接池HikariCP監(jiān)控教程
這篇文章主要介紹了可觀測性-Metrics-數(shù)據(jù)庫連接池HikariCP監(jiān)控教程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03SpringBoot進(jìn)行多表查詢功能的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot進(jìn)行多表查詢功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09安卓系統(tǒng)中實(shí)現(xiàn)搖一搖畫面振動效果的方法
這篇文章主要介紹了安卓系統(tǒng)中實(shí)現(xiàn)搖一搖畫面振動效果的方法,調(diào)用Android SDK中的SensorEventListener接口,需要的朋友可以參考下2015-07-07