黑马程序员技术交流社区

标题: 你真的懂方法的重写吗? [打印本页]

作者: jojo    时间: 2015-1-10 14:19
标题: 你真的懂方法的重写吗?
本帖最后由 jojo 于 2015-1-10 15:12 编辑

说到方法重写的“两同两小一大”,你真的懂为什么吗?
两同是指方法名和参数列表,这个很好理解,是重写的必要条件。
那为什么子类方法的返回值和抛出的异常,不能比父类的小呢?你真的能很好的解释缘由吗?
还有为什么子类方法的访问权限为什么要比父类大?你又真的懂吗?

如果,你能真正想明白,就说明,你真的懂重写和多态了。对,就是多态,重写和多态是密不可分的,各位朋友都好好想想吧。
PS:给点思路,如果不这么设计,多态调用时会出现什么问题,往这反面想,你也许就真的得到答案了。

作者: 常强儿    时间: 2015-1-10 15:01
“重载和多态是密不可分的”愿听听怎么解释的
作者: Eagle    时间: 2015-1-10 15:04
楼主说的是重载吗??。。。。。。。。。。。。。。。还是重写啊。。。
作者: bluebloodant    时间: 2015-1-10 15:04
这有什么好想的,听完不就知道了吗
作者: 诺诺    时间: 2015-1-10 20:27
为什么子类方法的返回值和抛出的异常,不能比父类的小呢?没理解,不是子类异常不能超过父类,如果出现新的异常只能内部处理么?
作者: 碎流    时间: 2015-1-10 21:05
楼主很厉害,,,我喜欢这样的人,爱思考,不拘泥形式...
作者: 魅影惊鸿    时间: 2015-1-10 23:05
重写在基础视频里要求2个函数完全一样,这是简化版的做法反正不会出错,lz挖的深了一些。。

子类重写方法的返回值必须等于父类方法的返回值或者比父类方法的返回值小,意思是说  子类重写方法的返回值类型必须为父类方法的返回值类型 或父类方法返回值类型的子类类型

子类重写方法抛出的异常类型 只能是父类方法抛出的类型  或父类方法抛出的异常类型的子类类型

子类重写方法的可见性 必须大于或等于父类方法的可见性,比如 父类方法是用 protected 修饰的 ,子类就只能用 protected 或 public 修饰 而不能用private 修饰
作者: da_chuan    时间: 2015-1-10 23:20
完全看不懂啊
作者: 云兮丶    时间: 2015-1-11 11:10
:lol不知道楼主是想说重写还是重载!




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