22

如何定义一个必须继承的类?在 C# 中

4

6 回答 6

48

您将类标记为abstract(这是 VB.NET 的 C# 类似物Must Inherit)。

这将确保它不能被直接实例化。

从链接的 MSDN 文章:

abstract 修饰符表示被修改的事物有一个缺失或不完整的实现。abstract 修饰符可以与类、方法、属性、索引器和事件一起使用。在类声明中使用 abstract 修饰符来指示一个类仅作为其他类的基类。标记为抽象或包含在抽象类中的成员必须由派生自抽象类的类实现。

(强调我的)

于 2012-06-23T21:04:31.770 回答
9

使用abstract修饰符。

public abstract class MyClass()
{
    ...
}
于 2012-06-23T21:04:49.507 回答
5

您可以将一个类定义为abstract,或者给它一个仅受保护的构造函数。abstract更好。

于 2012-06-23T21:04:39.493 回答
5

如果你想创建一个必须被继承的类,你需要用abstract修饰符标记它。

public abstract MyClass
{
}
于 2015-10-01T11:35:45.383 回答
2

如果这是一个问题,那么不可能在代码中强制执行派生或实现的必要性。

但:

您可以定义一个interface强制消费者实现它。

或者您可以abstract class只定义抽象成员以强制消费者覆盖所有这些成员。

希望这可以帮助。

于 2012-06-23T21:06:39.047 回答
0

最好有界面。

如果您需要模拟功能,并且不要求它在编译时失败......

  1. 在基类中定义一个方法。抛出异常作为实现中的唯一行。您可能想让消息非常清楚地说明问题所在。

  2. 覆盖超类中的方法并实现它们。如果您未能在超类中实现,您将得到异常。

不完美,但假设您正在尝试从 vb.net 移植代码......这可能会奏效。

于 2020-11-04T02:27:16.800 回答