方法重载 overloading 的要求:
一、方法必须同名
二、参数必须不同。 参数不同包括参数类型不同,参数个数不同,只要有一种不同就可以了
三、返回值可以相同或不同。在有多个同名方法的情况下,是根据参数不同,选择那个方法调用,而不是返回值
四、修饰符(权限)可以不同。
方法覆盖 overridden 的要求:
1)发生在父子类中;
2)同名、同参、同返回值
3)访问权限跟父类相同或更宽;不能比父类更封闭;例如父类中有一个 public void show(); 在子类中有一个方法覆盖:private void show(); 就会出错
4)子类方法抛出异常的类型不能比父类方法更宽泛;例如父类中有一个 public void show() throws IOException; 在子类中有一个方法覆盖:private void show() throws Exception; 就会出错
就方法覆盖的第3)条可以理解为儿子必须比老子更开放
第4)条可以理解为儿子必须比老子范的错误更小
这就叫进步啊