若想实现一个合格重写方法,而不是重载,那么必须同时知足下面的要求!继承
A、重写规则之一:重写方法不能比被重写方法限制有更严格的访问级别。 (可是能够更普遍,好比父类方法是包访问权限,子类的重写方法是public访问权限。)编译器
好比:Object类有个toString()方法,开始重写这个方法的时候咱们总容易忘记public修饰符,编译器固然不会放过任何教训咱们 的机会。出错的缘由就是:没有加任何访问修饰符的方法具备包访问权限,包访问权限比public固然要严格了,因此编译器会报错的。编译
B、重写规则之二:参数列表必须与被重写方法的相同。 重写有个孪生的弟弟叫重载,也就是后面要出场的。若是子类方法的参数与父类对应的方法不一样,那么就是你认错人了,那是重载,不是重写。权限
C、重写规则之三:返回类型必须与被重写方法的返回类型相同。方法
父类方法A:void eat(){}异常
子类方法B:int eat(){} 二者虽然参数相同,但是返回类型不一样,因此不是重写。兼容
父类方法A:int eat(){} 参数
子类方法B:long eat(){} 返回类型虽然兼容父类,可是不一样就是不一样,因此不是重写。void
D、重写规则之四:重写方法不能抛出新的异常或者比被重写方法声明的检查异常更广的检查异常。可是能够抛出更少,更有限或者不抛出异常。
E、重写规则之五:不能重写被标识为final的方法。 F、重写规则之六:若是一个方法不能被继承,则不能重写它。