1. 程式人生 > >Java過載和重寫的區別?

Java過載和重寫的區別?

  • 過載是一個類有多個方法,每個方法的名相同,引數表不同,可以通過傳入不同的引數表,呼叫不同的方法,體現了類的多型性
  •  
  • 重寫是子類繼承父類,子類可以使用所有的父類方法,如果想要修改某個父類方法,可以直接在子類中重新定義這個方法,子類呼叫時,就會呼叫子類所定義的方法,這就稱為重寫
  •  
  • 過載是由靜態型別確定的,屬於靜態分派,載入的時候即確定;重寫是由動態型別確定的,執行時被確定,屬於動態分派,動態方法由虛方法表實現,虛方法表儲存個個方法的實際入口地址,當子類重寫父類方法時,這個方法在虛方法表中指向的實際地址就是子類重寫父類方法的地址值,如果不被重寫,指向的是父類方法的地址
  •  
  • 子類重寫父類方法,將會覆蓋原有的方法,如需要父類中的方法可以使用super關鍵字,super().父類方法名