重寫(Override)
重寫是子類對父類的允許訪問的方法的實(shí)現(xiàn)過程進(jìn)行重新編寫裳朋。
重寫的好處在于子類可以根據(jù)需要,定義特定于自己的行為件相。也就是說子類能夠根據(jù)需要實(shí)現(xiàn)父類的方法再扭。
方法的重寫規(guī)則
- 參數(shù)列表與被重寫方法的參數(shù)列表必須相同。
- 返回類型與被重寫方法的返回類型可以不相同夜矗,但是必須是父類返回值的派生類(java5 及更早版本返回類型要一樣泛范,java7 及更高版本可以不同)。
- 訪問權(quán)限不能比父類中被重寫的方法的訪問權(quán)限更低紊撕。例如:如果父類的一個(gè)方法被聲明為 public罢荡,那么在子類中重寫該方法就不能聲明為 protected。
- 父類的成員方法只能被它的子類重寫。
- 聲明為final的方法不能被重寫区赵。
- 申明為static的方法不能被重寫惭缰,但是能夠被再次聲明。
- 子類和父類在同一個(gè)包中笼才,那么子類可以重寫父類所有方法漱受,除了聲明為private和final的方法。
- 子類和父類不在同一個(gè)包中骡送,那么子類只能夠重寫父類的聲明為public和protected的非final方法昂羡。
- 重寫的方法能夠拋出任何非強(qiáng)制異常,無論被重寫的方法是否拋出異常摔踱。但是虐先,重寫的方法不能拋出新的強(qiáng)制性異常,或者比被重寫方法聲明的更廣泛的強(qiáng)制性異常派敷,反之則可以蛹批。
- 構(gòu)造方法不能被重寫
- 如果不能繼承一個(gè)方法,則不能重寫這個(gè)方法篮愉。
重載(Overload)
是在一個(gè)類中腐芍,方法名字相同,而參數(shù)不同试躏,返回類型可以相同也可以不同甸赃。
每個(gè)重載的方法或者構(gòu)造函數(shù),都必須有一個(gè)獨(dú)一無二的參數(shù)類型列表冗酿。
最常用的地方就是構(gòu)造器的重載。
方法重載規(guī)則
- 被重載的方法必須改變參數(shù)列表(參數(shù)個(gè)數(shù)或類型不一樣)络断。
- 被重載的方法可以改變返回類型裁替。
- 被重載的方法可以改變訪問修飾符。
- 被重載的方法可以聲明新的或更廣的檢查異常貌笨。
- 方法能夠在同一個(gè)類中或者一個(gè)子類中被重載弱判。
- 無法以返回值類型作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。