问题标签 [abstract-class]

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 回答
353 浏览

c# - 抽象类 - 我是在想这件事还是做对了?

所以我使用 CollectionBase 作为自定义集合的继承类。我通过一个抽象类使用 CollectionBase,这样我就不会重复知识(遵循 DRY 原则)。抽象类也被定义为泛型类。这是我实施课程的方式:

我利用它,所以我不必在 10 多个类中实现这些基本方法。

我的问题是,当我像这样覆盖 Equals 方法时,我是否走得太远了:

我是否试图用我的摘要完成太多,还是以正确的方式做这件事?

编辑:这是为 .Net 2.0 编写的,无法访问 3.5 来利用 LINQ 之类的东西

0 投票
3 回答
21916 浏览

actionscript-3 - 您如何决定使用抽象类和接口?

重复接口与基类


我一直在深入了解 OOP、设计模式和 actionscript 3 的世界,但我仍然很好奇如何知道何时使用抽象类(不支持抽象类的 AS3 的伪类)和接口。对我来说,两者都只是作为确保在给定类中实现某些方法的模板。区别仅在于抽象类需要继承而接口仅扩展这一事实吗?

谢谢, 布赖恩霍奇 hodgedev.com

0 投票
7 回答
8788 浏览

c++ - 具体类的单独头文件 - C++

背景

我有一个抽象类,比如

会有很多具体的类只实现DoConvertion方法。

会有很多这样的具体实现。我创建了一个头文件,比如CharacterConverter.h,它具有抽象类IConverter

问题

由于我的具体类只实现了DoConvertion方法,是否需要为每个具体类创建单独的头文件?我的意思是是否需要为所有具体类创建ImageConverter.hTextConverter.h等?所有这些头文件都将包含与IConverter抽象类相同的代码。

有什么想法吗?

0 投票
9 回答
16388 浏览

c# - 序列化和恢复未知类

基础项目包含一个抽象基类 Foo。在单独的客户端项目中,有一些类实现了该基类。

我想通过在基类上调用一些方法来序列化和恢复具体类的实例:

可以假设在反序列化时,所有需要的类都存在。如果可能的话,序列化应该在 XML 中完成。使基类实现 IXmlSerializable 是可能的。

我有点卡在这里。如果我对事物的理解是正确的,那么这只能通过[XmlInclude(typeof(UnknownClass))]为每个实现类添加到基类来实现 - 但实现类是未知的!

有没有办法做到这一点?我没有反思的经验,但我也欢迎使用它的答案。

编辑:问题是序列化。只是序列化会很容易。:-)

0 投票
2 回答
3574 浏览

abstract-class - 抽象类和 Mixin 有什么区别?

我刚刚发现一篇关于 Java 框架的文章,它显然允许它支持Mixins和一种叫做面向复合编程的东西(据我所知,这甚至可能是同一件事......)我也听说过/使用过 AOP,而且我不确定它与此有何不同...

0 投票
9 回答
17304 浏览

c++ - 模板还是抽象基类?

如果我想让一个类具有适应性,并且可以从外部选择不同的算法——C++ 中最好的实现是什么?

我主要看到两种可能性:

  • 使用抽象基类并传入具体对象
  • 使用模板

这是一个小例子,在各种版本中实现:

版本 1:抽象基类

版本 2a:模板

版本 2b:模板和私有继承

来自 Java,我自然倾向于总是使用版本 1,但模板版本似乎更受欢迎,例如在 STL 代码中?如果这是真的,仅仅是因为内存效率等(没有继承,没有虚函数调用)吗?

我意识到版本 2a 和 2b 之间没有太大区别,请参阅C++ FAQ

你能评论一下这些可能性吗?

0 投票
1 回答
7996 浏览

c# - 基于抽象类公开 WCF 子类

我有一个抽象类,我希望能够将其公开给 WCF,以便任何子类也可以作为 WCF 服务启动。
这是我到目前为止所拥有的:

尝试在我的代码中创建服务时,我使用此方法:

当使用 Parent 作为我得到的服务类型
The contract name 'Parent' could not be found in the list of contracts implemented by the service 'Parent'.Service implementation type is an interface or abstract class and no implementation object was provided.

当使用 Child 作为我得到的服务类型时
The service class of type Namespace.Child both defines a ServiceContract and inherits a ServiceContract from type Namespace.Parent. Contract inheritance can only be used among interface types. If a class is marked with ServiceContractAttribute, then another service class cannot derive from it.

有没有办法在 Child 类中公开函数,这样我就不必专门添加 WCF 属性?

编辑
所以这个

使用 Child 返回启动服务
The contract type Namespace.Child is not attributed with ServiceContractAttribute. In order to define a valid contract, the specified type (either contract interface or service class) must be attributed with ServiceContractAttribute.

0 投票
2 回答
2961 浏览

mocking - 使用 Rhino 模拟抽象类默认行为

我对嘲笑很陌生,所以这可能是我还没有接受的东西,但我在任何地方都找不到一个好的例子。

我试图断言默认情况下,从我的抽象类继承的任何类都将在构造函数中实例化一个集合。这是抽象类:

我如何用 Rhino 模拟这个?如果我做一个GenerateMock<DataCollectionWorkflow>(或一个存根),构造函数运行并且模拟的私有字段“ _params”被初始化,但模拟的“ Parameters”属性只是空的。

显然,生成的模拟子类覆盖了属性实现。是否有某种方法可以将 Parameters 属性排除在重新实现之外?

谢谢。

0 投票
9 回答
3651 浏览

c# - 你能在一个实际的例子中帮助我理解抽象类与接口的用法吗?

您能否对抽象类与继承的使用有一个几乎过于简单化的理解并帮助我,以便我能够真正理解这个概念以及如何实现?我有一个我正在尝试完成的项目,但不知道如何实施。我一直在和我的教授聊天并且被告知很多,说如果我想不通,我可能还没有准备好参加这门课程。我已经覆盖了预先要求的课程,但仍然无法理解这些概念。

为了澄清,我到目前为止所做的项目如下。我还没有填写狗/猫课程等。能给我指点一下吗。我不要求任何人给我“答案”。我只是不知道该去哪里。我参加在线课程,他与我的沟通努力一直令人不安。我刚刚完成了所有其他课程的 4.0,所以我愿意付出努力,但我对这些概念的理解以及如何实际应用它们迷失了方向。

有什么意见或帮助可以让我在这个项目中取得进一步进展吗?

我要实现的描述如下:

概述:

本练习的目的是演示接口、继承、抽象类和多态性的使用。您的任务是获取提供的程序外壳并添加适当的类和相应的类成员/方法,以使该程序正常运行。您不能对提供的任何代码进行更改,您只能添加您编写的类。尽管有很多方法可以让程序正常工作,但您必须使用能够演示接口、
继承、抽象类和多态性的技术。同样,为了清楚起见,您可以添加到提供的代码中,但不能更改或删除任何代码。提供的代码只需要很少的附加代码即可满足练习的要求。

如果您成功完成分配,您的程序在运行时应输出以下语句:

我的名字是斑点,我是一只狗

我叫菲利克斯,我是一只猫

要求:

1) 您必须有一个名为“Animal”的抽象基类,Dog 和 Cat 类从该基类派生而来。

2) Animal 基类必须从接口“IAnimal”派生,它是唯一应该从 IAnimal 派生的类。

3) 由于所有动物都有名字,而且名字不是狗或猫特有的属性,因此 Animal

基类应该是存储名称和实现 WhatIsMyName 获取属性的位置。

4) 您将需要创建仅从 Animal 基类派生的 Dog 和 Cat 类。

5) Dog 和 Cat 类应该实现 WhatAmI 获取属性并返回适当的字符串值。

您无法更改的代码:

/////////////////////

到目前为止我写的代码:

0 投票
1 回答
3713 浏览

c# - 反序列化抽象类

我有一个抽象类“服务器”,我在我的 UI 中的 JavaScript 中创建它,然后我想在我的 Web 服务上有一个方法,它执行以下操作:

我遇到的问题是服务器无法反序列化,因为它是抽象的,我是否需要为我拥有的每个服务器都有一个从具体类型继承的方法,即

我非常感谢您的帮助,因为我不确定什么是最好的解决方案

我收到的确切错误是:

无法创建抽象类的实例。