摘要:重寫繼承的主要特性是子類可以根據父類已有功能的基礎上進行擴展,但是也有可能對父類的屬性和方法進行重寫覆寫。方法的重寫當子類定義了與父類方法名稱相同,參數列表相同以及返回值相同時,我們稱之為方法的重寫。
重寫(Override)
繼承的主要特性是子類可以根據父類已有功能的基礎上進行擴展,但是也有可能對父類的屬性和方法進行重寫/覆寫。
方法的重寫當子類定義了與父類方法名稱相同,參數列表相同以及返回值相同時,我們稱之為方法的重寫。
重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫!
方法的重寫規則
參數列表必須完全與被重寫方法的相同;
返回類型必須完全與被重寫方法的返回類型相同;
訪問權限不能比父類中被重寫的方法的訪問權限更低。例如:如果父類的一個方法被聲明為public,那么在子類中重寫該方法就不能聲明為protected。
父類的成員方法只能被它的子類重寫。
聲明為final的方法不能被重寫。
聲明為static的方法不能被重寫,但是能夠被再次聲明。
子類和父類在同一個包中,那么子類可以重寫父類所有方法,除了聲明為private和final的方法。
子類和父類不在同一個包中,那么子類只能夠重寫父類的聲明為public和protected的非final方法。
重寫的方法能夠拋出任何非強制異常,無論被重寫的方法是否拋出異常。但是,重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更廣泛的強制性異常,反之則可以。
構造方法不能被重寫。
如果不能繼承一個方法,則不能重寫這個方法。
重載(Overload)重載(overloading) 是在一個類里面,方法名字相同,而參數不同。返回類型可以相同也可以不同。
每個重載的方法(或者構造函數)都必須有一個獨一無二的參數類型列表。
重載規則:
被重載的方法必須改變參數列表(參數個數或類型不一樣);
被重載的方法可以改變返回類型,但無法以返回值類型作為重載函數的區分標準。
被重載的方法可以改變訪問修飾符;
被重載的方法可以聲明新的或更廣的檢查異常;
方法能夠在同一個類中或者在一個子類中被重載。
重寫與重載之間的區別區別點 | 重載(Overload) | 重寫(Override) |
---|---|---|
參數列表 | 必須修改 | 不能修改 |
返回類型 | 可以修改 | 不能修改 |
異常 | 可以修改 | 可以減少或刪除,一定不能拋出新的或者更廣的異常 |
權限 | 可以修改 | 一定不能做更嚴格的限制(可以降低限制) |
方法的重寫(Overriding)和重載(Overloading)是java多態性的不同表現,重寫是父類與子類之間多態性的一種表現,重載可以理解成多態的具體表現形式。
方法重載是一個類中定義了多個方法名相同,而他們的參數的數量不同或數量相同而類型和次序不同,則稱為方法的重載(Overloading)。
方法重寫是在子類存在方法與父類的方法的名字相同,而且參數的個數與類型一樣,返回值也一樣的方法,就稱為重寫(Overriding)。
方法重載是一個類的多態性表現,而方法重寫是子類與父類的一種多態性表現。
當需要在子類中調用父類的被重寫方法時,要使用super關鍵字。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73553.html
摘要:重寫語言中的定義子類方法有一個方法與父類方法的名字相同且參數類型相同。父類方法的返回值可以替換掉子類方法的返回值。思維導圖參考文檔極客時間深入拆解虛擬機是如何執行方法調用的上廣告 原文 回顧Java語言中的重載與重寫,并且看看JVM是怎么處理它們的。 重載Overload 定義: 在同一個類中有多個方法,它們的名字相同,但是參數類型不同。 或者,父子類中,子類有一個方法與父類非私有方...
摘要:對應的代碼接下來的句是關鍵部分,兩句分分別把剛剛創建的兩個對象的引用壓到棧頂。所以雖然指令的調用是相同的,但行調用方法時,此時棧頂存放的對象引用是,行則是。這,就是語言中方法重寫的本質。 類初始化 在講類的初始化之前,我們先來大概了解一下類的聲明周期。如下圖 類的聲明周期可以分為7個階段,但今天我們只講初始化階段。我們我覺得出來使用和卸載階段外,初始化階段是最貼近我們平時學的,也是筆試...
摘要:中,任何未處理的受檢查異常強制在子句中聲明。運行時多態是面向對象最精髓的東西,要實現運行時多態需要方法重寫子類繼承父類并重寫父類中已 1、簡述Java程序編譯和運行的過程:答:① Java編譯程序將Java源程序翻譯為JVM可執行代碼--字節碼,創建完源文件之后,程序會先被編譯成 .class 文件。② 在編譯好的java程序得到.class文件后,使用命令java 運行這個 .c...
摘要:中,任何未處理的受檢查異常強制在子句中聲明。運行時多態是面向對象最精髓的東西,要實現運行時多態需要方法重寫子類繼承父類并重寫父類中已 1、簡述Java程序編譯和運行的過程:答:① Java編譯程序將Java源程序翻譯為JVM可執行代碼--字節碼,創建完源文件之后,程序會先被編譯成 .class 文件。② 在編譯好的java程序得到.class文件后,使用命令java 運行這個 .c...
閱讀 2879·2021-11-24 09:39
閱讀 3130·2021-11-19 10:00
閱讀 1535·2021-10-27 14:17
閱讀 1811·2021-10-14 09:43
閱讀 961·2021-09-03 10:30
閱讀 3413·2019-08-30 15:54
閱讀 2728·2019-08-30 13:05
閱讀 2006·2019-08-30 11:02