/**
*
* @author fanqinglin
* 1.子类当覆写父类的方法的时候,可以不抛出父类的异常,也可以抛出相同或者比父类异常范围更小的异常
* 2.子类覆写父类的方法的时候,首先要将父类和子类的方法名称,方法参数个数,以及其类型,返回类型保持一致。
* 3.同时在处理修饰符的时候,如果父类为private,则子类覆写错误,因为不可继承或者称为不可用
* 4.如果父类为protected 则子类可以为protected或者public,即是:子类要比父类的范围更大些
* 5.遵循继承原则:继承必须确保超类所拥有的性质在子类中仍然成立 IS A 关系
*/
class A {
protected void foo() throws Exception {}
}
class B extends A {
@Override
public void foo() throws IOException,Exception {} // allowed
/* @Override
public void foo() throws {} // allowed
*/ /* @Override
public void foo() throws SQLException {} // NOT allowed
*/ }
1) 在覆盖一个方法时,子类的方法可见性不能低于超类方法的可见性。参考: http://topic.csdn.net/u/20111129/11/efebbcb8-6e5d-45c4-a768-dea2b8e37abd.html
2) 在覆盖一个方法时,子类的方法不应抛出新的或更宽泛的受检异常。参考: http://stackoverflow.com/questions/5875414/method-overriding-and-exceptions