1. 程式人生 > >Java中過載和覆蓋的異同點

Java中過載和覆蓋的異同點

方法的覆蓋和過載具有以下相同點:

都要求方法同名 
都可以用於抽象方法和非抽象方法之間

方法的覆蓋和過載具有以下不同點:

方法覆蓋要求引數列表(引數簽名)必須一致,而方法過載要求引數列表必須不一致。 
方法覆蓋要求返回型別必須一致,方法過載對此沒有要求。 
方法覆蓋只能用於子類覆蓋父類的方法,方法過載用於同一個類中的所有方法(包括從父類中繼承而來的方法) 
方法覆蓋對方法的訪問許可權和丟擲的異常有特殊的要求,而方法過載在這方面沒有任何限制。 
父類的一個方法只能被子類覆蓋一次,而一個方法可以在所有的類中可以被過載多次。

另外,對於屬性(成員變數)而言,是不能過載的,只能覆蓋。

總結:覆蓋就是函式名,引數列表,返回值等完全一樣,函式體不一樣。 
過載就是隻有函式名一樣,引數不完全一樣,返回值可以一樣也可以不一樣。