测试代码:
class A {
protected void fun(int a, int b) throws IOException {}
protected void fun1(int a, int b) throws IOException {}
}
public class B extends A{
//Override
//public void fun(int a, int b) {} //正确,重写父类方法,可以扩大访问权限
//protected void fun(int a, int c) {} //错误,仅改变形参名不视为重写
//protected void fun(int a,int b) throws Exception{} //错误。重写父类方法,不能抛出范围更大的异常
//protected String fun(int a, int b) {} //错误,重写父类方法,不能改变返回值类型
//private void fun(int a, int b) {} //错误,重写父类方法,不能降低访问权限
//Overload
//protected void fun1(int a, long c) {} //正确,重载父类方法,需改变参数类型
protected void fun1(int a, int b,long c) {} //正确,重载父类方法,可以改变参数列表
public String fun1(int a, long b) {return null;} //正确,修改参数列表后,可以改变访问类型和返回值