java 方法重寫概念
重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫!
重寫的好處在於子類可以根據需要,定義特定於自己的行為。 也就是說子類能夠根據需要實現父類的方法。
重寫方法不能丟擲新的檢查異常或者比被重寫方法申明更加寬泛的異常。例如: 父類的一個方法申明瞭一個檢查異常 IOException,但是在重寫這個方法的時候不能丟擲 Exception 異常,因為 Exception 是 IOException 的父類,只能丟擲 IOException 的子類異常。
方法的重寫規則
-
引數列表與被重寫方法的引數列表必須完全相同。
-
返回型別與被重寫方法的返回型別可以不相同,但是必須是父類返回值的派生類(java5 及更早版本返回型別要一樣,java7 及更高版本可以不同)。
-
訪問許可權不能比父類中被重寫的方法的訪問許可權更低。例如:如果父類的一個方法被宣告為 public,那麼在子類中重寫該方法就不能宣告為 protected。
-
父類的成員方法只能被它的子類重寫。
-
宣告為 final 的方法不能被重寫。
-
宣告為 static 的方法不能被重寫,但是能夠被再次宣告。子類中宣告為static也不可以。
-
子類和父類在同一個包中,那麼子類可以重寫父類所有方法,除了宣告為 private 和 final 的方法。
-
子類和父類不在同一個包中,那麼子類只能夠重寫父類的宣告為 public 和 protected 的非 final 方法。
-
重寫的方法能夠丟擲任何非強制異常,無論被重寫的方法是否丟擲異常。但是,重寫的方法不能丟擲新的強制性異常,或者比被重寫方法宣告的更廣泛的強制性異常,反之則可以。
-
構造方法不能被重寫。
-
如果不能繼承一個類,則不能重寫該類的方法,也就是說,重寫只發生於繼承中。
相關文章
- java之方法的重寫Java
- Java重寫equals方法時為什麼要重寫hashcode方法Java
- 07-08、構造方法基本概念:重寫init方法構造方法
- java方法的神奇修改(重寫)Java
- Java中方法重寫與方法過載Java
- Java 面試題關於方法的重寫Java面試題
- 複習java面對物件(方法重寫)Java物件
- java 新建立的類要重寫的方法Java
- 重寫equals()方法時,需要同時重寫hashCode()方法
- 重寫Java的String及其大部分方法Java
- 二、Java初級--8、繼承和重寫方法Java繼承
- Java 重寫方法與初始化的隱患Java
- Java 方法過載概念Java
- 方法重寫(Override)IDE
- java -繼承 -重寫Java繼承
- 建議重寫equals方法時也一併重寫hashCode方法
- java為什麼要重寫hashCode和equals方法Java
- Java中父類方法重寫有哪些需要注意的?Java
- Java中final修飾的方法是否可以被重寫Java
- 【JAVA】重寫和過載Java
- java基礎學習之三:方法的過載和重寫Java
- java 中為什麼重寫 equals 後需要重寫 hashCodeJava
- 【iOS】category重寫方法的呼叫iOSGo
- Java入門系列之重寫Java
- 為什麼重寫 equals() 方法,一定要重寫 hashCode() 呢?| HashMapHashMap
- JavaBean重寫Object類中的方法JavaBeanObject
- 方法重置和重寫的區別
- 你不知道的Java重寫Java
- Java中的過載和重寫Java
- python繼承和重寫init方法Python繼承
- 重寫Object.equals()方法和Object.hashCode()方法Object
- Java—重寫與過載的區別Java
- java程式設計——從jvm角度看懂類初始化、方法重寫、過載Java程式設計JVM
- 重寫、覆蓋、過載、多型幾個概念的區別分析多型
- AI回答記錄:python中有過載與重寫的概念嗎?AIPython
- PHP 方法重寫,引數不同,報錯: DeclarationPHP
- Java 重寫(Override)與過載(Overload)JavaIDE
- 用Rust替代Java重寫DNS解析器RustJavaDNS