A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© alvinbx 中级黑马   /  2014-8-2 00:05  /  1312 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 alvinbx 于 2014-8-11 19:27 编辑

为什么子类重写父类方法,如果父类方法没有抛出异常,子类就不能抛出异常呢?视频上讲的子类只能抛出跟父类方法一样的异常或者该异常的子类我是理解了,可是父类没有抛异常子类就不能抛,视频没讲,我也没想明白,知道的朋友还请分享下……

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

7 个回复

倒序浏览
hmid 来自手机 中级黑马 2014-8-2 00:25:53
沙发
我的理解是:子类被当做父类使用时,属性和方法都只能使用父类中定义了的。调用的方法就应该符合父类中的定义,虽然由于多态实际调用的可能是子类中的方法。但其表现应该符合父类中的规范。
回复 使用道具 举报
举个例子,你爸爸已经很差劲了,儿子怎么能够更差劲呢?java在设计之初就是这样想的。
回复 使用道具 举报
如果父类没有处理异常的,子类抛给父类谁来处理,父类没处理,所以子类不能抛

点评

学习了  发表于 2014-8-2 13:49
回复 使用道具 举报
不知道你对”子类只能抛出跟父类方法一样的异常或者该异常的子类“是怎么理解的,其实”父类没有抛异常子类就不能抛“的原因和它是一样的。比如有个方法接收一个Person类型的参数,按多态,你可以传入Student、Worker、Teacher给这个方法。但这个方法的编写者只可能考虑到调用父类即Person类的方法时可能抛出的异常并进行处理。如果允许子类新增异常,那么Person每添加一个子类,接收Person类型参数的方法就要改动一次(多处理一个异常),多态岂不成名存实亡?
回复 使用道具 举报
长见识了
回复 使用道具 举报
这是多态的特点,若子类重写父类方法,如果父类没抛出异常,子类抛出异常话,用父类引用接收子类对象,父类处理不了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马