首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 方法重寫(Override)完整規則與多態機制深度解析

     編輯:Java 綜合教學

什麼是方法重寫?

重寫:子類對父類可訪問方法的實現進行重新編寫——方法簽名(返回值、參數列表)不變,方法體邏輯重寫。核心優勢:子類可根據自身業務定義專屬行為,實現「一個接口,多種實現」。

經典多態演示

class Animal {
    public void move() { System.out.println("動物可以移動"); }
}
class Dog extends Animal {
    @Override
    public void move() { System.out.println("狗可以跑和走"); }
}

public class Test {
    public static void main(String[] args) {
        Animal a = new Animal();
        Animal b = new Dog();  // 父類引用指向子類對象
        a.move();  // 輸出:動物可以移動
        b.move();  // 輸出:狗可以跑和走(動態綁定)
    }
}

原理:編譯期檢查引用類型(Animal 有 move()),運行期 JVM 根據實際對象類型(Dog)調用對應方法——這就是動態多態。

編譯失敗案例

Animal b = new Dog();
b.bark();  // 編譯錯誤:Animal 類無 bark() 方法

修正:Dog b = new Dog(); 或向父類添加 bark() 方法。

重寫鐵律(11 條核心規則)

  1. 參數列表必須完全一致
  2. 返回類型必須完全一致(Java 5+ 支持協變返回類型)
  3. 訪問權限不能降低(如 public 不能改為 protected)
  4. 只有被繼承的方法才能被重寫
  5. final 方法禁止重寫
  6. static 方法不能重寫(屬類不屬對象),但可隱藏
  7. 同包:可重寫父類非 private/final 方法
  8. 不同包:僅能重寫 public/protected 非 final 方法
  9. 拋出異常:可拋出任意非受檢異常;受檢異常不能新增或擴大範圍(可縮小或不拋)
  10. 構造方法不能重寫
  11. 無法繼承的方法無法重寫

@Override 註解的價值

編譯期強制檢查是否真正重寫父類方法,防止拼寫錯誤導致變成「重載」。

總結

重寫是 Java 面向對象三大特性(封裝、繼承、多態)中「多態」的核心體現。掌握規則邊界,善用 @Override,能寫出健壯、可擴展的繼承體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved