如何继承构造函数?

2024-05-06

Imagine具有许多构造函数和虚方法的基类

public class Foo
{
   ...
   public Foo() {...}
   public Foo(int i) {...}
   ...
   public virtual void SomethingElse() {...}
   ...
}

现在我想创建一个重写虚拟方法的后代类:

public class Bar : Foo 
{
   public override void SomethingElse() {...}
}

还有一个后代做了更多的事情:

public class Bah : Bar
{
   public void DoMoreStuff() {...}
}

我真的必须将所有构造函数从 Foo 复制到 Bar 和 Bah 中吗?然后,如果我更改 Foo 中的构造函数签名,是否必须在 Bar 和 Bah 中更新它?

没有办法继承构造函数吗?难道就没有办法鼓励代码重用吗?


是的,您必须实现对每个派生有意义的构造函数,然后使用base关键字将该构造函数定向到适当的基类或this关键字将构造函数定向到同一类中的另一个构造函数。

如果编译器对继承构造函数做出假设,我们将无法正确确定对象是如何实例化的。在大多数情况下,您应该考虑为什么有这么多构造函数,并考虑将它们减少到基类中只有一两个。然后,派生类可以使用常量值屏蔽其中一些,例如null并且仅通过其构造函数公开必要的部分。

Update

在 C#4 中,您可以指定默认参数值并使用命名参数来使单个构造函数支持多个参数配置,而不是每个配置都有一个构造函数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何继承构造函数? 的相关文章

  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 重载<<的返回值

    include
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable

随机推荐

  • 将字符串拆分为单词和标点符号,而不使用任何导入

    我见过与我的问题类似的问题 但它们都使用了正则表达式 我想做的是接受诸如 哇 这真的很有帮助 之类的输入 然后返回到 哇 这真的很有帮助 所以我想将标点符号从单词中分离出来 我已经尝试过这个 但它根本不起作用 sentence input
  • 将 ArgIterator 编组到 va_list

    所以 我想到了尝试 p invoke C 函数va list 我知道如何 p 调用经典的可变参数函数 使用 arglist 在我看来va list就像一个ArgIterator 我认为可以将其传递给该方法 DllImport msvcrt
  • 基于导航历史而不是路线路径的角度面包屑

    有没有办法实现基于导航历史记录的面包屑而不是基于正常路线路径的面包屑 例子 路线 主页 HChild1 HChild1 1 首页 HChild2 HChild2 1 如果用户从主页导航到 HChild2 1 面包屑应该是 首页 HChild
  • 将 WordPress 保持在版本控制中 - 主题的单独存储库

    我的 WordPress 项目位于 Git 下 并将 WordPress 作为子模块 我想将主题开发保留在单独的子模块中 但在当前设置内 将主题设置为子模块时遇到一些困难 这是我的文件系统 git master repo index php
  • Node.js 中的 HTTPS 代理服务器

    我正在开发一个node js代理服务器应用程序 我希望它支持HTTP and HTTPS SSL 协议 作为服务器 我目前正在使用node http proxy https github com nodejitsu node http pr
  • Sinatra 请求对象

    我可能在这里遗漏了一些非常明显的东西 但我似乎无法找到答案 或者自己解决它 在西纳特拉 他们有一个self get方法 捕获块 当调用块时 您可以使用request里面有变量 这怎么可能 Sinatra module Sinatra cla
  • 计算指向 CLLocation 的罗盘航向 - 适用于 iOS 的半正弦函数

    我了解如何获取 2 个 CLLocation 之间的距离 我需要确定从 CLLocation 到另一个 CLLocation 的广义罗盘方位 N NE E 等 在我实现使用半正矢公式推导方位之前 是否有一个通用的开源库或代码片段 您发现可以
  • 如何在 Intellij Idea 12 中重命名/移动项目?

    就像声明的那样here http link sheidaei com mozcw人们可以更改项目的名称 但是 它仅更改项目名称 不会更改文件夹结构 例如 如果您的项目名为sample1并且位于 user1 development IdeaP
  • 在 Ruby 中构建字符串时,为什么铲运算符 (<<) 优于加等于 (+=)?

    我正在通过 Ruby Koans 进行工作 The test the shovel operator modifies the original string公案中about strings rb包括以下评论 Ruby 程序员倾向于使用铲子
  • Galaxy Tab 和 Motorola XOOM 的绘图和布局

    我正在 Galaxy Tab 和 Motorola XOOM 模拟器皮肤上测试我的应用程序 我不明白为什么从错误的文件夹中获取可绘制对象 我有drawable xhdpi 文件夹 我在其中存储大尺寸图片 但是 Tab 从drawable h
  • socket.io 广播功能 & Redis pub/sub 架构

    如果有人能帮助我解决一个小疑问 我将不胜感激 使用socket io广播功能和在Redis上使用pub sub设计架构有什么区别 例如 在另一个示例中 node js 服务器正在侦听 socket io 针对 键 模型 todo 和值 数据
  • 如何在书架中取出整数钥匙?

    我想在架子上存储一个整数密钥 但是当我尝试将整数密钥存储在搁置中时 它给了我一个错误 Traceback most recent call last File write py line 12 in data id Id id Name n
  • 如何使用QLPreviewPanel?

    我该如何使用QLPreviewPanel 我知道它以前不是公共 API 但在 10 6 中已经有了 如何使用它在标准 QuickLook 面板中显示文件预览 查看快速查看下载器 http developer apple com librar
  • Azure AD 的 MVC/SPA 身份验证方案

    以下是 Azure AD 支持的应用程序类型和场景 Web 浏览器到 Web 应用程序 http msdn microsoft com en us library azure dn499820 aspx BKMK Browser 本机应用程
  • 使用 chrome headless 和 selenium 下载

    我正在使用 python selenium 和 Chrome 59 并尝试自动执行简单的下载序列 当我正常启动浏览器时 下载可以工作 但是当我在无头模式下这样做时 下载不起作用 Headless implementation from se
  • Groovy 安装 HTTPBuilder 现在 Codehaus 关闭了?

    我是一个 groovy n00b 并尝试使用 http builder 但网络上的所有示例都引用相同的内容 Grab声明不起作用 我认为这是因为 codehaus org 不再托管常规内容 我尝试过从以下位置下载源代码github http
  • 在Android中存储和恢复cookie(持久cookie存储)

    搜索了很多 我有一个应用程序 应用程序登录服务器并接收一些cookie 然后它可以使用它们执行一些POST请求 例如获取用户个人资料 我想在会话之间存储它们 这意味着我可以重新启动设备 运行应用程序并获取配置文件 而无需额外登录 或者 换句
  • mysql中相同字符集和排序规则的varchar和nvarchar有什么区别

    谁能告诉我具有相同字符集和整理的 varchar 和 nvarchar 之间有什么区别 例子 varchar CHARACTER SET utf8mb4 COLLATE utf8mb4 unicode ci and nvarchar CHA
  • 将纪元时间转换为日期 PHP

    我现在正在使用一个 API 它提供了一个 epochTime 我已尝试一切方法将此纪元转换为日期 但它似乎不起作用 包括 epoch time 1000然后使用date 函数来转换它 纪元时间看起来像这样 1353430853299 有办法
  • 如何继承构造函数?

    Imagine具有许多构造函数和虚方法的基类 public class Foo public Foo public Foo int i public virtual void SomethingElse 现在我想创建一个重写虚拟方法的后代类