.net - 重载、覆盖和隐藏?

标签 .net oop

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




8年前关闭。




谁能解释什么是.Net 中的重载、覆盖和隐藏?

谢谢

最佳答案

重载 是单个方法或运算符的多个可能“签名”的定义。每个签名采用不同的参数,本质上是一个不同的函数,与多个函数具有不同名称的情况没有什么不同。这通常用于对概念上相似的操作进行分组,例如重载 +BigInteger 一起工作并与 String :这两个操作似乎都可以使用 + for(除非你认为 + 的所有重载都应该定义 Abelian groups —— String 重载没有)。

覆盖 是同一方法签名的多个可能实现的定义,这样实现由第零个参数的运行时类型决定(在 C# 中通常由名称 this 标识)。

隐藏 是派生类型中方法的定义,其签名与其基类型之一中的签名相同,但没有覆盖。

覆盖和隐藏的实际区别如下:

  • 如果方法被覆盖,则调用的实现基于参数 this 的运行时类型。 .
  • 如果方法只是隐藏,则调用的实现基于参数 this 的编译时类型。 .
  • 关于.net - 重载、覆盖和隐藏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/856449/

    相关文章:

    嵌套字典中的 C# 值总和,其中值是类 Dictionary<string, Dictionary<Int16, CommonData>>

    c++ - 由外向内与由内向外方法的 OOP (C++) 教学

    javascript - 如何将多个类属性设置为一个对象的属性

    python - 在 Python 中创建基类返回子对象

    Python OOP : how to share a MongoDB connection with all classes

    c# - 在 .net 4 下开发具有同步和异步功能的 TCP 客户端,该客户端还监听服务器发起的通知

    .net - Windows 4.5 Bootstrap 包在哪里?

    .net 位图改变图像的颜色

    .net - 如何使用WCF进行负载均衡

    java - 在子类中构建方法继承/隐藏方法