方法重写的规则要遵循“两同两小一大”规则:
- “两同”:即方法名相同,形参列表相同;
- “两小”:指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或者相等;
- “一大”:指的是子类方法的访问权限应比父类方法的访问权限更大或相等。
注意:覆盖方法和被覆盖的方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法!例如,如下代码将会引发编译错误:
class BaseClass {
public static void test() {...}
}
class SubClass extends BaseClass {
public void test() {...}
}