在Java中,方法重寫是一種使用子類對(duì)父類中已有方法進(jìn)行修改或擴(kuò)展的技術(shù)。方法重寫允許子類使用自己的方式來實(shí)現(xiàn)父類的方法,使得繼承的成員變量和方法在子類中也可以使用。
在進(jìn)行方法重寫的時(shí)候,子類的方法必須具備以下幾個(gè)要素:
方法名必須與父類中被重寫的方法名一致
方法的參數(shù)類型和個(gè)數(shù)必須與父類中被重寫的方法的參數(shù)類型和個(gè)數(shù)一致
方法的返回類型必須與父類中被重寫的方法的返回類型一致,或者是其子類
方法的訪問修飾符必須與父類中被重寫的方法的訪問修飾符相同或更為寬松
方法拋出的異常類型必須與父類中被重寫的方法的拋出的異常類型一致,或者是其子類
Java方法重載
Java中允許在一個(gè)類中定義多個(gè)同名方法,但是它們的參數(shù)列表必須不同,這就是Java方法重載。方法重載提供了一種更加簡潔的實(shí)現(xiàn),使得程序員可以使用相同方法名來定義不同的行為,并且可以使用不同的參數(shù)類型和方法數(shù)目。
在進(jìn)行方法重載的時(shí)候,下面幾個(gè)要素必須不同:
方法名相同
參數(shù)個(gè)數(shù)不同或者參數(shù)類型不同或者參數(shù)順序不同
返回類型可以不同,但是方法重載的主要區(qū)別在于參數(shù)
Java方法重載和重寫的區(qū)別
Java中方法重載和方法重寫都允許在同一個(gè)類中命名相同的方法名,但是它們的實(shí)現(xiàn)方法和效果是不同的。
方法重載允許一個(gè)類中有多個(gè)方法共用同一個(gè)名稱,但是它們的參數(shù)類型和個(gè)數(shù)必須不同,調(diào)用的時(shí)候需要根據(jù)不同的參數(shù)來區(qū)分,這樣可以提供靈活的調(diào)用方式,但是代碼可讀性會(huì)隨著不同間的重載方法變得更加難以理解。
方法重寫是當(dāng)一個(gè)父類的方法在子類中的實(shí)現(xiàn)不符合需要,需要進(jìn)行覆蓋和擴(kuò)展時(shí)的一種實(shí)現(xiàn)方式。子類重寫的方法和父類的方法在核心層面必須保持一致,但是子類可以在自己的方法中擴(kuò)展和修改父類的方法行為,達(dá)到更好的效果,這樣大大增加了代碼的復(fù)用性。