问题标签 [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 投票
5 回答
11091 浏览

c# - ASP.NET 控制器基类 User.Identity.Name

本文所述,我创建了一个抽象的基本控制器类,以便能够将数据从控制器传递到 master.page。在这种情况下,我想在我的数据库中查找用户,查询 User.Identity.Name(仅当他登录时)。

但是,我注意到在这个抽象基类中,User属性总是null. 我该怎么做才能让它工作?

非常感谢

0 投票
6 回答
36638 浏览

.net - 抽象类的命名约定

我清楚地记得,有一次,微软推动的指导方针是将“Base”后缀添加到抽象类中,以消除它是抽象的事实。因此,我们有像System.Web.Hosting.VirtualFileBase, System.Configuration.ConfigurationValidatorBase, System.Windows.Forms.ButtonBase, 和当然的类System.Collections.CollectionBase

但我注意到,最近,框架中的许多抽象类似乎并没有遵循这个约定。例如,以下类都是抽象的,但不遵循此约定:

  • System.DirectoryServices.ActiveDirectory.DirectoryServer

  • System.Configuration.ConfigurationElement

  • System.Drawing.Brush

  • System.Windows.Forms.CommonDialog

这就是我可以在几秒钟内鼓起的。所以我去查了官方文档是怎么说的,以确保我没有疯。我在 MSDN 的Design Guidelines for Developing Class Libraries中找到了类、结构和接口的名称。奇怪的是,我找不到将“Base”添加到抽象类名称末尾的指南。并且该指南不再适用于 1.1 版框架。

那么,我会失去它吗?这个指南曾经存在吗?是不是一句话就被抛弃了?在过去的两年里,我是否一直在自己创造长的班级名称?

有人在这里扔我一根骨头。

更新 我没疯。该指南存在。Krzysztof Cwalina 在 2005 年对此表示不满。

0 投票
11 回答
15336 浏览

java - Java:接口与抽象类(关于字段)

根据我收集到的信息,我想强制一个类使用特定的私有字段(和方法)我需要一个抽象类,因为接口只声明公共/静态/最终字段和方法。正确的??

我刚开始我的第一个大型 Java 项目,想确保以后不会伤害自己 :)

0 投票
3 回答
3104 浏览

c# - 使用泛型时转换为抽象类或接口

我有这个方法 Verify_X,它在数据绑定期间为列表框选定值调用。问题是强类型数据源。我想使用抽象类 BaseDataSource 或接口来调用支持的方法:Parameters[] 和 Select(),而不是使用如下所示的最具体的实现。

这样一种方法可以用于我拥有的所有不同类型的数据源,而不是为每个数据源使用一种方法。它们都以相同的方式继承。

这是继承/实现的链

BaseDataSource 具有我需要的方法和属性。DseDataSource 的实现方式如下:

我知道可以编辑 DseDataSource 类,添加一个接口来访问 Parameters[] 和 Select(),然后针对它进行编程,这允许我想要的,但这需要编辑 NetTiers 库,我很想知道这是否可以做到,因为它看起来很困难。

最终结果将是如下代码:

0 投票
24 回答
368236 浏览

oop - 何时使用接口而不是抽象类,反之亦然?

这可能是一个通用的 OOP 问题。我想根据它们的用法在接口和抽象类之间进行通用比较。

什么时候需要使用接口,什么时候需要使用抽象类

0 投票
1 回答
1746 浏览

c++ - 纯虚方法 VS。函数指针

最近我一直在设计一个 Thread 类库,我做了一个 Thread 抽象类,如下所示:

真正的线程类会继承这个抽象类并doOperation以自己的逻辑实现方法,类似于Strategy Pattern

问题是我依赖于一个 C 后端库,它定义了在以下函数中运行线程:

如你看到的; 第二个参数是一个指向线程循环(主函数)的函数指针,这就是问题所在;由于我使用这个 C 函数在run方法中启动线程,所以我将地址传递doOperation给第二个参数,但由于类型不匹配,这无法完成。

我尝试使用reinterpret_cast返回指针,但我 ISO-C++ 禁止返回未初始化函数成员的指针。我不知道如何克服这个冲突,我猜使用静态方法是唯一的解决方案,但这会破坏我的设计模式!

0 投票
8 回答
64748 浏览

c# - 为什么我不能在抽象 C# 类上创建抽象构造函数?

我正在创建一个抽象类。我希望我的每个派生类都被迫实现构造函数的特定签名。因此,如果我想强迫他们实现一种方法,我会做我会做的事情,我做了一个抽象的方法。

但是我收到一条消息说抽象修饰符在这个项目上是无效的。我的目标是强制执行一些这样的代码。

这都是 C# .NET 代码。谁能帮我吗?

更新 1

我想补充一些东西。我最终得到的是这个。

这就是一些人所说的,默认是私有的,并且该类需要实现一个构造函数。但是,这不会强制使用签名 A(int a, int b) 的构造函数。

更新 2

我应该清楚,为了解决这个问题,我将我的默认构造函数设为私有,并保护我的其他构造函数。我并不是真的在寻找一种让我的代码工作的方法。我处理好了。我希望了解为什么 C# 不允许您这样做。

0 投票
17 回答
103016 浏览

ruby - 如何在 Ruby 中实现一个抽象类

我知道 Ruby 中没有抽象类的概念。但是如果需要实施,我该怎么做呢?我试过这样的事情:

但是,当我尝试实例化 B 时,它会在内部调用A.new会引发异常的调用。

此外,模块不能被实例化,但它们也不能被继承。将新方法设为私有也行不通。

有没有人有任何指示?

0 投票
9 回答
33249 浏览

c# - C#:创建抽象类的实例而不定义新类

我知道它可以在 Java 中完成,因为我过去曾广泛使用过这种技术。下面将显示 Java 中的示例。(附加问题。这种技术叫什么?很难找到没有名字的例子。)

现在,我的主要问题是,这也可以在 C# 中完成,如果可以,怎么做?

0 投票
1 回答
1369 浏览

django - Django:检索抽象派生模型

在对我之前的问题得到很好的回答后,我遇到了另一个问题。

我遵循第三种方法,了解 djangodocs 对抽象模型子类化的说法。

我正在使用最新的 Django,rev 9814。我得到的奇怪行为: