W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
重新定義從超類繼承的類中的實(shí)例方法稱為方法重寫(xiě)。
讓我們考慮類A和類B的以下聲明:
public class A { public void print() { System.out.println("A"); } } public class B extends A { public void print() { System.out.println("B"); } }
類B是類A的子類。類B從其超類繼承print()方法并重新定義它。
類B中的print()方法覆蓋類A的print()方法。
如果一個(gè)類覆蓋了一個(gè)方法,它會(huì)影響覆蓋的類及其子類。考慮下面的類C的聲明:
public class C extends B { // Inherits B.print() }
類C不聲明任何方法。它繼承類B中的print()方法。
類總是繼承它的直接超類的可用的。
方法必須是實(shí)例方法。重寫(xiě)不適用于靜態(tài)方法。
重寫(xiě)方法必須具有與重寫(xiě)方法相同的名稱。
重寫(xiě)方法必須具有與重寫(xiě)方法相同順序的相同類型的相同數(shù)量的參數(shù)。
當(dāng)方法的參數(shù)使用通用類型時(shí),考慮通用類型參數(shù)的擦除,而不是通用類型本身與其他方法比較。
參數(shù)的名稱無(wú)關(guān)緊要。
如果重寫(xiě)方法的返回類型是引用類型,則重寫(xiě)方法的返回類型必須與重寫(xiě)方法的返回類型兼容。
重寫(xiě)方法的訪問(wèn)級(jí)別必須至少與重寫(xiě)方法的訪問(wèn)級(jí)別相同或更寬松。
下表列出了重寫(xiě)方法允許的訪問(wèn)級(jí)別
重寫(xiě)方法訪問(wèn)級(jí)別 | 允許重寫(xiě)方法訪問(wèn)級(jí)別... |
---|---|
public | public |
protected | public, protected |
package-level | public, protected, package-level |
方法可以在其throws子句中包括檢查異常的列表。重寫(xiě)方法無(wú)法向重寫(xiě)方法中的異常列表添加新的異常。
它可以刪除一個(gè)或所有異常,或者可以用另一個(gè)異常替換異常。
從子類訪問(wèn)重寫(xiě)的方法。子類可以使用關(guān)鍵字 super
作為限定符來(lái)調(diào)用超類的重寫(xiě)方法。
class MySuperClass { public void print() { System.out.println("Inside MySuperClass"); } } class MySubClass extends MySuperClass { public void print() { // Call print() method of MySuperClass class super.print(); // Print a message System.out.println("Inside MySubClass.print()"); } public void callOverridenPrint() { // Call print() method of MySuperClass class super.print(); } } public class Main { public static void main(String[] args) { MySubClass aoSub = new MySubClass(); aoSub.print(); aoSub.callOverridenPrint(); } }
上面的代碼生成以下結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: