在Java和其他一些高階物件導向的程式語言中,子類別可繼承父類別中的方法,而不需要重新編寫相同的方法。但有時子類別並不想原封不動地繼承父類別的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋,下文為大家介紹java方法重寫及重寫規則,一起學習吧
一、方法重寫(Override)
在Java中如何定義重寫:Java程式中類別的繼承特性可以產生一個子類,子類別繼承父類別就擁有了父類別的非私有的屬性(方法和變數),在子類別中可以增加自己的屬性(方法和變數),同時也可以對父類別中的方法進行擴展,以增強自己的功能,這樣就稱之為重寫,也稱為複寫或覆蓋。所謂方法重寫就是子類別的方法和父類別中繼承下來的方法具有完全相同的方法名稱、傳回值類型、方法的參數個數以及參數類型,這樣才能稱為方法重寫。
程式碼體現:
// 这是父类的定义 public class Person { public void eat() { System.out.println("=====这是父类Person的eat方法======="); } } // 这是子类的定义 public class Student extends Person { @Override public void eat() { System.out.println("===这是子类Student的eat方法==="); } // main方法测试 public static void main(String[] args) { Student student = new Student(); student.eat(); //输出:===这是子类Student的eat方法=== } }
子類別重寫父類別的方法後,在實例化子類別的時候則調用的是子類別中的方法,父類別的方法就如同被覆蓋了一樣。如果在子類別中需要呼叫父類別的方法,則在子類別方法中使用super關鍵字呼叫父類別的方法,格式:super.父類別中的方法名稱(參數清單)。
重寫規則:
在進行方法重寫的時候需要遵循下列規則才能實作方法重寫:
(一)子類別方法的參數清單必須和父類別中被重寫的方法的參數清單相同(參數數量和參數類型),否則只能實現方法的重載。
(二)子類別方法的傳回值類型必須和父類別中被重寫的方法傳回值類型相同,否則只能實作方法重載。
(三)在Java規定,子類別方法的存取權限不能比父類別中被重寫的方法的存取權限更小,必須大於或等於父類別的存取權限。
(四)在重寫的過程中,如果父類別中被重寫的方法拋出異常,則子類別中的方法也要拋出異常。但是拋出的異常也有一定的約束--->子類不能拋出比父類更多的異常,只能拋出比父類更小的異常,或者不拋出異常。例如:父類別方法拋出Exception,那麼子類別就只能拋出IOException或拋出比Exception小的異常或不拋出例外。
以上是Java中方法的重寫的詳細內容。更多資訊請關注PHP中文網其他相關文章!