问题标签 [multiple-inheritance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2077 浏览

ruby-on-rails - 如何使用 Ruby ActiveRecord 建模这种多继承关系?

假设我有 5 张桌子。ActiveRecord 可以处理这个吗?你会如何设置它?

层次结构:

编辑:在休眠和城堡活动记录中,启用此场景所需的方法称为“加入子类”。

0 投票
5 回答
760 浏览

c# - 如何模拟多重继承并使用反射来优化此代码?

我有一个 WPF 应用程序,其中PageItems是模型对象。

我的主要 ViewModel 有一个PageItemViewModels的 ObservableCollection ,每个都从其匹配的 PageItem 模型对象构建自己。

每个PageItemViewModel 都继承自抽象类BaseViewModel以获得 INotifyPropertyChanged 功能。

每个PageItemViewModel还实现IPageItemViewModel以确保它具有所需的属性。

我最终将有大约 50 页,所以我想消除任何不必要的代码

  • 已解决(见下文):有没有办法让 PageItemViewModel 类继承 IdCode 和 Title,所以我不必在每个类中实现它们?我不能把它们放在 BaseViewModel 中,因为其他 ViewModel 继承它不需要这些属性,我不能把它们放在 IPageItemViewModel 中,因为它只是一个接口。我知道我需要C# 不支持的多重继承
  • 已解决(见下文):有没有办法摆脱switch语句,例如以某种方式使用反射

下面是一个独立的控制台应用程序,它演示了我在WPF应用程序中的代码:

重构:接口改为抽象类

消除 Switch 语句的答案:

谢谢戳:

0 投票
8 回答
11187 浏览

java - Java中多重继承的替代方案

我创建了两个豆子

现在,如果一个类是 backpage 感知的,那么它将扩展 backPageBean,或者如果它需要显示某种消息,那么它扩展 InformationMessageBean。


现在的问题是,如果我想拥有一个既是 BackPageAware 又是 InformationAware 的 bean,因为我们没有多重继承,应该采用什么方法?

0 投票
10 回答
1384 浏览

c++ - 多重继承何时可能是唯一合理的解决方案?

需要明确的是,我不是在问多重继承是好是坏。我从那场辩论的双方都听到了很多争论。

我想知道 C++ 中是否存在任何类型的设计问题或场景,其中多重继承要么是完成某事的唯一方法,要么至少是所有其他替代方案的最佳方式,以至于它不会考虑其他任何事情的意义。

显然,这个问题不适用于不支持多重继承的语言。

0 投票
3 回答
2196 浏览

c# - C# 接口中的“重命名”继承方法

Repository Pattern在开发 ASP.NET MVC 应用程序(使用 .NET 3.5、ASP.NET MVC 1.0 和实体框架)时试图理解 ,。我已经获得了足够的依赖注入,并且都可以使用一种控制器和一种实体类型,但是现在我已经实现了对不同类型之间关系的支持,但我被卡住了。

在我见过的所有示例中,存储库接口都被称为IContactsRepository,并且包含Contact仅与项目有关的(CRUD)方法。我想实现 的分组Contacts,所以我有一个名为 的实体类型Group,以及一个IGroupRepository用于处理组(CRUD)操作的接口。

  • 与多个实体类型相关的方法属于哪里(在这种情况下,例如AddToGroup添加 aContact到 a的方法Group)?

我尝试为存储库创建更大的继承结构,并在其中创建了以下接口:

然后我尝试创建一个继承的主存储库,IRepository如下所示:

一旦我尝试使用此代码从我的控制器调用存储库中的方法之一

Get<Contact>()我收到一条关于继承 viaIContactsRepositoryGet<Group>()来自 via之间歧义的构建错误消息IGroupsRepository。我知道这是不允许的,因为IRepository 继承了具有不同类型的相同通用接口(参见链接文章中的示例 5)。

  • 现在,由于我通过其他接口继承,是否有机会“覆盖”这些方法的名称,例如如下所示?

    /li>

这样,我可以IRepository.Getcontacts毫无歧义地访问它。是否有可能,或者是否有任何解决此问题的方法?

还有一个新问题,需要澄清:

  • 无论如何在控制器的调用中指定Get()我想要哪种方法?

  • 解决我最初的问题的最佳方法是什么 - 需要一个可以处理很多事情的存储库,而不仅仅是一种实体类型?

编辑:添加了类的代码示例Repository并从Controller.

0 投票
8 回答
675 浏览

python - 消除多重继承

我有以下问题,我想知道是否有一种很好的方法可以在不使用多重继承的情况下对这些对象进行建模。如果有什么不同,我正在使用 Python。

学生需要联系信息和学生信息。成人需要联系信息和账单信息。学生可以是成年学生,在这种情况下我需要联系/学生/账单信息,或者他们可以是儿童,在这种情况下我需要联系/学生/家长信息。

只是为了清楚系统将如何使用,我需要能够要求一份所有成年人的名单(我会得到成年学生加上父母),或所有学生的名单(我会得到儿童学生加上成人学生)。

此外,所有这些对象都需要有一个共同的基类。

0 投票
6 回答
1161 浏览

c++ - C ++,静态检测具有不同地址的基类?

如果我有一个具有多个基的派生类,则每个基的每个 this 指针都将不同于派生对象的 this 指针,除了一个。给定继承层次结构中的两种类型,我想在编译时检测它们是否共享相同的 this 指针。像这样的东西应该可以工作,但不能:

因为它需要是一个“整数常量表达式”,并且根据标准只允许整数转换(这很愚蠢,因为如果没有使用虚拟继承,它们只需要编译时间信息)。尝试将结果作为整数模板参数传递时也会出现同样的问题。

我能做的最好的事情是在启动时检查,但我需要在编译期间的信息(让一些深入的模板黑客工作)。

0 投票
6 回答
354 浏览

c++ - 是否存在需要多重继承的场景?

有没有需要多重继承的场景?请提供例子。

0 投票
2 回答
1428 浏览

python - 我如何才能找到在基本测试类上定义的类属性?

我正在对数据库运行一些集成测试,我希望有一个看起来像这样的结构:

这样,我可以像这样分别运行 SQL Server 测试和 Oracle 测试:

或者像这样的所有集成测试:

但是,nose 似乎只会在子类上查找属性,而不是在基类上。因此我必须像这样定义测试类,否则测试将无法运行:

维护起来有点繁琐。任何想法如何解决这个问题?如果我只是处理一个基类,我只需使用一个元类并定义每个类的属性。但是对于测试类的元类、Oracle 的元类和 SQL Server 的元类,我感到不安。

0 投票
5 回答
1836 浏览

c# - 当不能选择多重继承时如何重用代码?

我想将几个旧测试类中的一些方法用到我正在构建的新类中。不幸的是,C# 不支持多重继承。如何重用这些旧类的代码?我只是将它们创建为成员对象吗?或者我还有其他选择吗?