黑马程序员技术交流社区

标题: 请教关于子类重写父类异常的问题 [打印本页]

作者: alvinbx    时间: 2014-8-2 00:05
标题: 请教关于子类重写父类异常的问题
本帖最后由 alvinbx 于 2014-8-11 19:27 编辑

为什么子类重写父类方法,如果父类方法没有抛出异常,子类就不能抛出异常呢?视频上讲的子类只能抛出跟父类方法一样的异常或者该异常的子类我是理解了,可是父类没有抛异常子类就不能抛,视频没讲,我也没想明白,知道的朋友还请分享下……
作者: hmid    时间: 2014-8-2 00:25
我的理解是:子类被当做父类使用时,属性和方法都只能使用父类中定义了的。调用的方法就应该符合父类中的定义,虽然由于多态实际调用的可能是子类中的方法。但其表现应该符合父类中的规范。
作者: a6511631    时间: 2014-8-2 12:40
举个例子,你爸爸已经很差劲了,儿子怎么能够更差劲呢?java在设计之初就是这样想的。
作者: Bule丶    时间: 2014-8-2 12:43
如果父类没有处理异常的,子类抛给父类谁来处理,父类没处理,所以子类不能抛
作者: fantacyleo    时间: 2014-8-2 12:48
不知道你对”子类只能抛出跟父类方法一样的异常或者该异常的子类“是怎么理解的,其实”父类没有抛异常子类就不能抛“的原因和它是一样的。比如有个方法接收一个Person类型的参数,按多态,你可以传入Student、Worker、Teacher给这个方法。但这个方法的编写者只可能考虑到调用父类即Person类的方法时可能抛出的异常并进行处理。如果允许子类新增异常,那么Person每添加一个子类,接收Person类型参数的方法就要改动一次(多处理一个异常),多态岂不成名存实亡?
作者: liubea    时间: 2014-8-2 13:47
长见识了
作者: 南柯一梦    时间: 2014-8-2 14:18
这是多态的特点,若子类重写父类方法,如果父类没抛出异常,子类抛出异常话,用父类引用接收子类对象,父类处理不了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2