java學習筆記43 方法重寫(方法覆蓋)

2021-09-12 19:32:01 字數 1010 閱讀 6723

1)方法重寫只存在於子類和父類(包括直接父類和間接父類)之間。在同乙個類中方法只能被過載,不能被重寫.

2)靜態方法不能覆蓋

a. 父類的靜態方法不能被子類重寫為非靜態方法 //編譯出錯

b. 父類的非靜態方法不能被子類重寫為靜態方法;//編譯出錯

c. 子類可以定義與父類的靜態方法同名的靜態方法(但是這個不是覆蓋)

例如:a類繼承b類 a和b中都乙個相同的靜態方法test

b a = new a();

a.test();//呼叫到的時候b類中的靜態方法test

a a = new a();

a.test();//呼叫到的時候a類中的靜態方法test

可以看出靜態方法的呼叫只和變數宣告的型別相關

這個和非靜態方法的重寫之後的效果完全不同

3)私有方法不能被子類重寫

子類繼承父類後,是不能直接訪問父類中的私有方法的,那麼就更談不上重寫了。

例如:public class person

}//編譯通過,但這不是重寫,只是倆個類中分別有自己的私有方法

public class student extends person

}4)重寫的語法

1)方法名字必須一樣

2)引數列表必須一樣

3)訪問修飾符可以擴大,但不能縮小

4)丟擲異常範圍可以縮小,但不能擴大

5)返回型別可以相同,也可以不同,如果不同,那麼重寫後的方法返回型別必須是原來方法返回型別的子型別.

例如:public class person

protected object test()throws exception

}//編譯通過,子類繼承父類,重寫了run和test方法.

public class student extends person

public string test()

}5)為什麼要重寫

子類繼承父類,繼承了父類中的方法,但是父類中的方法並不一定能滿足子類中的功能需要,所以子類中需要把方法進行重寫。

Java學習筆記(10) 方法

方法 什麼是方法 乙個演算法邏輯功能的封裝,是一般完成乙個業務功能,如 登陸系統,建立聯絡人,簡單說 方法是動作,是動詞。方法名 一般按照方法實現的功能定名,一般使用動詞定義,如 login createcontact createanswer 方法引數 是方法的前提條件,是方法執行依據,是資料,如...

05 方法重寫

在繼承關係中,子類如果定義了乙個與父類方法簽名完全相同的方法,被稱為覆寫 override 加上 override可以讓編譯器幫助檢查是否進行了正確的覆寫。例如,在person類中,我們定義了run 方法 class person 在子類student中,覆寫這個run 方法 class stude...

java基礎篇(六)方法重寫

子類擴充套件了父類,大部分的時候,子類總是以父類為基礎,額外的增加新的成員變數和方法。但是有一種情況例外 子類需要重寫父類的方法。比如說鳥類birds都有飛翔fly 自由自在地飛 的本領,鴕鳥ostrich是鳥類的子類,但鴕鳥不會飛翔,這個時候就需要重寫birds的方法fly 方法為 不會飛,地上跑...