方法重载 overloading 的要求:

 

一、方法必须同名

二、参数必须不同。 参数不同包括参数类型不同,参数个数不同,只要有一种不同就可以了

三、返回值可以相同或不同。在有多个同名方法的情况下,是根据参数不同,选择那个方法调用,而不是返回值

四、修饰符(权限)可以不同。

 

方法覆盖 overridden 的要求:

 

1)发生在父子类中;

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

3)访问权限跟父类相同或更宽;不能比父类更封闭;例如父类中有一个 public void show(); 在子类中有一个方法覆盖:private void show(); 就会出错

4)子类方法抛出异常的类型不能比父类方法更宽泛;例如父类中有一个 public void show() throws IOException; 在子类中有一个方法覆盖:private void show() throws Exception; 就会出错

 

就方法覆盖的第3)条可以理解为儿子必须比老子更开放

 

第4)条可以理解为儿子必须比老子范的错误更小

 

这就叫进步啊