當一個子類繼承一父類,而子類中的方法與父類中的方法的名稱,參數個數、類型都完全一緻時,就稱子類中的這個方法重寫了父類中的方法。通常,派生類繼承基類的方法,因此,在調用對象繼承方法的時候,調用和執行的是基類的實現.但是,有時需要對派生類中的繼承方法有不同的實現.
通常,派生類繼承基類的方法。因此,在調用對象繼承方法的時候,調用和執行的是基類的實現。但是,有時需要對派生類中的繼承方法有不同的實現。例如,假設動物類存在“跑"的方法,從中派生出馬和狗,馬和狗的跑得形态是各不相同的,因此同樣方法需要兩種不同的實現,這就需要"重新編寫"基類中的方法。"重寫"基類方法就是修改它的實現或者說在派生類中重新編寫。 兩個相等的同類型對象必須返回相同的哈希代碼,才能确保以下類型的實例正确運行: 1:不管是重寫還是覆蓋都不會影響父類自身的功能(廢話,肯定的嘛,除非代碼被改)。
2:當用子類創建父類的時候,如 C1 c3 = new C2(),重寫會改變父類的功能,即調用子類的功能;而覆蓋不會,仍然調用父類功能。
3:虛方法、實方法都可以被覆蓋(new),抽象方法,接口 不可以。
|