黑马程序员技术交流社区

标题: C#多态性的体现:重载,覆盖,隐藏 [打印本页]

作者: 向晓伟    时间: 2014-6-26 15:11
标题: C#多态性的体现:重载,覆盖,隐藏
本帖最后由 向晓伟 于 2014-6-30 15:26 编辑

之前在c++上见到过,发现C#也是这样。
所以特来水一贴~知道的朋友就当复习,不知道的朋友就当预习~哈哈~
特别是隐藏规则使问题复杂性增加很多,要注意啊!


重载(overload)用于同一类中的成员函数,其特征为:
     * 1)在同一类中
     * 2)相同的函数名
     * 3)参数不同(包括参数类型不同,或参数个数不同,或两者都不同,注意:和返回值没关系)
     * 4)和是否虚函数无关

     覆盖(override)是指派生类函数覆盖基类函数,其特征为:
     * 1)不同的范围(分别位于派生类与基类)
     * 2)相同的函数名称
     * 3)参数相同
     * 4)基类函数必须是虚函数
用法:基类中用virtual修饰符,子类中用override修饰符,重写后,子类对象和基类对象访问该方法时,结果都是在访问子类中重新定义的方法。

    隐藏(hide)是指派生类的函数屏蔽了与其同名的基类函数,其特征为:
     * 1)不同的范围(分别位于派生类与基类)
     * 2)相同的函数名
     * 3)若参数不同,不管基类函数有无virtual关键字,基类函数将会被隐藏。
         若参数相同,基类函数无virtual关键字。基类函数将会被隐藏。
用法:基类函数virtual修饰符可有可无,子类函数可用new标识隐藏该方法,最后通过基类的引用访问该方法时,访问的仍是基类的函数,子类对象访问的是子类的函数。
作者: 天佑の清清    时间: 2014-6-26 15:41
嗯啊 赞一个
作者: Cacerine    时间: 2014-6-28 10:52
先预习一下,还没有学到呢!
正在做飞行棋
作者: czwanglei    时间: 2014-6-28 21:54
你这个帖子可以编辑为资源共享
作者: 向晓伟    时间: 2014-6-29 13:17
czwanglei 发表于 2014-6-28 21:54
你这个帖子可以编辑为资源共享

我在主题分类那没有资源共享的选项,怎么弄啊?
作者: czwanglei    时间: 2014-6-30 09:38
向晓伟 发表于 2014-6-29 13:17
我在主题分类那没有资源共享的选项,怎么弄啊?

不好意思,应该是资源分享




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