如何让C#仅在继承类时实例化,这是最简单的方法?
听起来很奇怪,但我不想解释原因。我有一个基类和两个继承它的类。我只想使用派生类而不是基类。派生类没有任何额外的函数。什么是最简单的方式,以便我不能编写new BaseClass(); 以免我意外使用它? 我确实有一些操作基类而不是派生类的函数。
如何让C#仅在继承类时实例化,这是最简单的方法?
听起来很奇怪,但我不想解释原因。我有一个基类和两个继承它的类。我只想使用派生类而不是基类。派生类没有任何额外的函数。什么是最简单的方式,以便我不能编写new BaseClass(); 以免我意外使用它? 我确实有一些操作基类而不是派生类的函数。
将该类作为抽象基类。
abstract class Person { }
class Programmer : Person { }
var person = new Person(); // compile time error
var programmer = new Programmer(); // ok
public abstract class BaseClass {
...
}
不要使用常规的:
"public Class MyClass"
而是改为:
"public abstract Class MyClass"
基类可以是抽象的吗?那就可以实现这个功能。
BaseClass
的构造函数设为protected:public class BaseClass {
protected BaseClass()
{
// DO SOMETHING
}
}
public class Derived : BaseClass {
public Derived() {}
}
根据您的需求描述,将您的类设为抽象
是正确的方法。这将阻止您实例化基类,并允许您调用其函数。这还允许您将函数和属性标记为抽象,并强制继承类对它们进行实现。
如果您没有共享代码的需要,接口是一个不错的选择。它允许您以非常类似于抽象类的方式实现它,并将您的实现转换为它。
希望这能为您增加一些价值。
为基类使用受保护的构造函数