方法重載 overloading 的要求:

 

一、方法必須同名

二、參數(shù)必須不同。 參數(shù)不同包括參數(shù)類型不同,參數(shù)個數(shù)不同,只要有一種不同就可以了

三、返回值可以相同或不同。在有多個同名方法的情況下,是根據(jù)參數(shù)不同,選擇那個方法調(diào)用,而不是返回值

四、修飾符(權限)可以不同。

 

方法覆蓋 overridden 的要求:

 

1)發(fā)生在父子類中;

2)同名、同參、同返回值

3)訪問權限跟父類相同或更寬;不能比父類更封閉;例如父類中有一個 public void show(); 在子類中有一個方法覆蓋:private void show(); 就會出錯

4)子類方法拋出異常的類型不能比父類方法更寬泛;例如父類中有一個 public void show() throws IOException; 在子類中有一個方法覆蓋:private void show() throws Exception; 就會出錯

 

就方法覆蓋的第3)條可以理解為兒子必須比老子更開放

 

第4)條可以理解為兒子必須比老子范的錯誤更小

 

這就叫進步啊