天天看點

Overload與Override

Overload重載:指同一個類中可以同時存在多個同名的方法,但是方法的參數個數、參數類型及參數順序不能相同(傳回值類型可以改變)。

Override重寫:指子類中存在與父類某個方法的方法名、參數個數和參數類型以及傳回值類型完全一樣的方法,總之和父類中的某個方法簽名完全一樣。通過子類建立的執行個體調用這個方法時,将調用子類中的這個方法。就相當于子類中的這個方法把父類中的這個同名方法給覆寫了一樣了。

  • 重寫是面向對象程式設計中多态性的實作方式之一。
  • 子類中的這個方法隻能抛出比父類中的同名方法少的異常或是抛出父類方法中抛出異常的子異常。
  • 子類中覆寫的方法的通路權限隻能比父類中的大或相等,不能更小。
  • 如果父類中的某個方法是private的,且子類中存在一個同名和同參數的方法時,此時不能稱之為Override。因為子類根本不知道父類有這麼一個方法,何來覆寫。

Overload的方法是否可以改變傳回值類型?

  • 如果方法名相同,參數清單不同,那是可以改變傳回值類型的。

final 方法不能被覆寫。

static 方法不能被子類繼承,也就不能覆寫。

要實作重載,隻能通過不同的參數清單實作,不能通過 通路修飾符、傳回值、抛出的異常實作。

覆寫的方法,隻能改變通路修飾符、抛出的異常,不能改變傳回類型、方法名和參數清單。且通路修飾符隻能擴大或不變,抛出的異常隻能是父類中同名方法抛出異常的子集或子異常。  

如果改變了其他,就不能稱之為覆寫,就相當于在子類中新增了個方法。