1. 程式人生 > >方法過載和重寫的區別

方法過載和重寫的區別

方法過載(overload):

方法過載就是在一個類中可以建立多個方法,它們具有相同的名字,但是具有不同的引數和不同的定義,呼叫方法時通過傳遞給它們的不同引數個數和引數型別來決定具體使用哪個方法,這就是多型性,過載的時候方法名一樣,引數型別和個數不一樣,返回值型別可以相同可以不同,可以有不同的訪問修飾符,可以丟擲不同的異常。

方法重寫(override):

父類與子類之間的多型性,對父類的函式進行重新定義,如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫,在java中子類可以繼承父類中的方法,而不需要重新編寫相同的方法,但有時子類並不想原封不動地繼承父類的方法,而是想做一定的修改,這就需要採用方法重寫,方法重寫又稱方法覆蓋。

若子類中的方法與父類中的某一方法具有相同的方法名,返回型別,引數列表,則新方法將覆蓋原有的方法,如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。

子類函式的訪問修飾許可權不能小於父類的。

重寫方法一定不能丟擲新的檢查異常或者比被重寫方法申明更加寬泛的檢查性異常(父類的異常寬泛性比子類的廣)。

這裡寫圖片描述

輸出結果為:這是一隻狗,它的名字是阿黃。
可見,呼叫的是子類中的desc()方法,而不是父類的desc,這就是方法的重寫。