能否在同一個Java類中重寫一個方法?


當我們有兩個類,其中一個類繼承自另一個類,並且這兩個類具有相同的方法(包括引數和返回型別,例如**sample**),子類中的方法會重寫父類中的方法。

也就是說,由於它是繼承關係。如果我們例項化子類,則會在子類物件中建立父類成員的副本,因此子類物件可以使用這兩種方法。

但是,如果呼叫該方法(sample),則將執行子類的方法,從而重寫父類的方法。

示例

 線上演示

class Super{
   public static void sample(){
      System.out.println("Method of the superclass");
   }
}
public class OverridingExample extends Super {
   public static void sample(){
      System.out.println("Method of the subclass");
   }  
   public static void main(String args[]){
      Super obj1 = (Super) new OverridingExample();
      OverridingExample obj2 = new OverridingExample();
      obj1.sample();
      obj2.sample();
   }
}

輸出

Method of the superclass
Method of the subclass

在同一個類中重寫方法

在重寫時:

  • 兩種方法都必須位於兩個不同的類中,並且這些類必須存在繼承關係。

  • 兩種方法必須具有相同的名稱、相同的引數和相同的返回型別,否則它們將被視為不同的方法。

  • 子類中的方法的訪問限制不能高於超類中的方法。如果嘗試這樣做,則會引發編譯時異常。

  • 如果超類方法丟擲某些異常,則子類中的方法應丟擲相同的異常或其子型別(可以不丟擲任何異常)。

因此,不能重寫存在於同一個類中的兩個方法,只能過載它們。

更新於:2019年9月10日

3K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.