1. 程式人生 > >Java方法過載跟重寫的區別

Java方法過載跟重寫的區別

1.過載的定義:

方法過載是指在一個類中定義多個同名的方法,但要求每個方法具有不同的引數的型別或引數的個數。體現了面向物件的多型性。

過載的原則:

1、方法名一定要相同。

2、方法的引數一定要不同,包括引數的型別以及個數。

3、方法的個數相同時型別要不同,型別相同時個數要不同。

4、方法的返回型別跟修飾符可以相同也可以不相投。

2.方法重寫的定義:

子類繼承父類的方法之後,在子類中用相同方法名,返回值,以及相同引數的方法,來覆蓋父類中的方法,這叫做方法重寫,也叫做方法覆蓋。

重寫的原則:

1、引數列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是過載。

2、返回的型別必須一直與被重寫的方法的返回型別相同,否則不能稱其為重寫而是過載。

3、訪問修飾符的限制一定要大於被重寫方法的訪問修飾符(public>protected>default>private)

4、重寫方法一定不能丟擲新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常。

5、父類中的私有方法不能被重寫。

過載跟重寫的區別:

1、方法覆蓋要求引數列表(引數簽名)必須一致,而方法過載要求引數列表必須不一致。

2、方法覆蓋要求返回型別必須一致,方法過載對此沒有要求。

3、方法覆蓋只能用於子類覆蓋父類的方法,方法過載用於同一個類中的所有方法(包括從父類中繼承而來的方法)

4、方法覆蓋對方法的訪問許可權和丟擲的異常有特殊的要求,而方法過載在這方面沒有任何限制。

5、父類的一個方法只能被子類覆蓋一次,而一個方法可以在所有的類中可以被過載多次。

重寫發生在繼承關係當中,體現了Java語言的多型性,過載發生在同一個類中,提高了程式碼的簡潔性,Java中因為過載跟重寫的存在,使得Java中類的設計更加簡潔。