黑马程序员技术交流社区

标题: 关于需方法重写的问题 [打印本页]

作者: 迷你卡卡    时间: 2013-10-9 14:57
标题: 关于需方法重写的问题
本帖最后由 迷你卡卡 于 2013-10-9 21:03 编辑

在C#中,当父类中的方法被定义为虚方法时,在子类中通过override关键字,重写父类中的虚方法时,这时,这个重写的方法可以改变返回值,参数,访问修饰符这些吗?请各位大神尽量说详细

作者: Liu阳    时间: 2013-10-9 15:42
不可以吧,重写的意思就是告诉编译我不要父类的了,我重写一个我自己的,那么你改变了之后,编译器认为你是不要父类的了,还是我新定义了一个?对吗?
作者: ╰┄轩、辕_ヤ    时间: 2013-10-9 19:00
方法重写(overiding method)

子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。 如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。
2方法重写的特性

关于方法重写的一些特性:
1.发生方法重写的两个方法返回值、方法名、参数列表必须完全一致(子类重写父类的方法)
2.子类抛出的异常不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)
3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)
根据2,3条是不是能确定第一条,子类方法的返回值必须是父类方法返回值的子类。
作者: 迷你卡卡    时间: 2013-10-9 21:02
我下去又查了下,是不能做任何修改的




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