当前位置: 备案域名出售 > 建站教程>正文

加在异常上面的限制

覆写方法的时候,你只能抛出这个方法在基类中的版本所声明的异常。这是一个有用的限制,因为同基类打交道的代码能自动地同它的派生类,包括它抛出地异常打交道。异常方面的限制对构造函数不起作用。你可以从stormyInning看出,派生类的构造函数根本不看基类抛出的是什么类型的异常,它只会根据它自己需要抛出异常。然而,由于派生类的构造函数总是会以这样或那样的形式调用基类的构造函数(这里调用的是默认的构造函数),派生类的构造函数必须在异常说明中声明,它有可能会抛出其基类构造函数所抛出的异常。注意,派生类的构造函数不能捕获任何由基类构造函数抛出的异常。

尽管在继承过程中,编译器会对异常说明做强制要求,但异常说明本身并不属于方法的特征,特征是由方法的名字与参数的类型组成的。理解这一点会非常有用。因此,你不能根据异常说明来重载方法。此外,一个出现在基类方法的异常说明中的异常,不一定会出现在派生类方法的异常说明里。这点同继承的规则有明显不同,在继承中,基类的方法必须出现在继承类里。换一句话说,在继承和覆写的过程中,方法的“异常说明的接口”不是变大而是变小了——这正好和接口在继承时的情形相反。

« 上一篇下一篇 »