99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

Java 方法重寫(xiě)

2018-01-18 19:24 更新

Java面向?qū)ο笤O(shè)計(jì) - Java方法重寫(xiě)

方法重寫(xiě)

重新定義從超類(lèi)繼承的類(lèi)中的實(shí)例方法稱(chēng)為方法重寫(xiě)。

例子

讓我們考慮類(lèi)A和類(lèi)B的以下聲明:

public class A  {
    public void  print() { 
        System.out.println("A");
    }
}

public class B  extends A  {
    public void  print() { 
        System.out.println("B");
    }
}

類(lèi)B是類(lèi)A的子類(lèi)。類(lèi)B從其超類(lèi)繼承print()方法并重新定義它。

類(lèi)B中的print()方法覆蓋類(lèi)A的print()方法。

如果一個(gè)類(lèi)覆蓋了一個(gè)方法,它會(huì)影響覆蓋的類(lèi)及其子類(lèi)??紤]下面的類(lèi)C的聲明:

public class C  extends B  {
   // Inherits B.print()
}

類(lèi)C不聲明任何方法。它繼承類(lèi)B中的print()方法。

注意

類(lèi)總是繼承它的直接超類(lèi)的可用的。

方法必須是實(shí)例方法。重寫(xiě)不適用于靜態(tài)方法。

重寫(xiě)方法必須具有與重寫(xiě)方法相同的名稱(chēng)。

重寫(xiě)方法必須具有與重寫(xiě)方法相同順序的相同類(lèi)型的相同數(shù)量的參數(shù)。

當(dāng)方法的參數(shù)使用通用類(lèi)型時(shí),考慮通用類(lèi)型參數(shù)的擦除,而不是通用類(lèi)型本身與其他方法比較。

參數(shù)的名稱(chēng)無(wú)關(guān)緊要。

如果重寫(xiě)方法的返回類(lèi)型是引用類(lèi)型,則重寫(xiě)方法的返回類(lèi)型必須與重寫(xiě)方法的返回類(lèi)型兼容。

訪問(wèn)級(jí)別

重寫(xiě)方法的訪問(wèn)級(jí)別必須至少與重寫(xiě)方法的訪問(wèn)級(jí)別相同或更寬松。

下表列出了重寫(xiě)方法允許的訪問(wèn)級(jí)別

重寫(xiě)方法訪問(wèn)級(jí)別允許重寫(xiě)方法訪問(wèn)級(jí)別...
publicpublic
protectedpublic, protected
package-levelpublic, protected, package-level

方法可以在其throws子句中包括檢查異常的列表。重寫(xiě)方法無(wú)法向重寫(xiě)方法中的異常列表添加新的異常。

它可以刪除一個(gè)或所有異常,或者可以用另一個(gè)異常替換異常。

訪問(wèn)重寫(xiě)方法

從子類(lèi)訪問(wèn)重寫(xiě)的方法。子類(lèi)可以使用關(guān)鍵字 super 作為限定符來(lái)調(diào)用超類(lèi)的重寫(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é)果。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)