除非继承,否则使C#不实例化类的最简单方法是什么?
听起来很奇怪,但我不想解释原因。我有一个基类和两个继承它的类。我只想使用派生类而不是基类。 derive类没有任何额外的功能。什么是最简单的方法,不允许我写新的BaseClass();所以我不小心使用它?我确实有在基类上运行的函数,而不是派生的函数。
答案 0 :(得分:43)
使该类成为abstract
基类。
abstract class Person { }
class Programmer : Person { }
var person = new Person(); // compile time error
var programmer = new Programmer(); // ok
答案 1 :(得分:6)
答案 2 :(得分:5)
基类可以是抽象的吗?那样做。
答案 3 :(得分:5)
public abstract class BaseClass {
...
}
答案 4 :(得分:5)
而不是正常:
"public Class MyClass"
制作
"public abstract Class MyClass"
答案 5 :(得分:1)
使BaseClass
受保护的构造函数:
public class BaseClass {
protected BaseClass()
{
// DO SOMETHING
}
}
public class Derived : BaseClass {
public Derived() {}
}
答案 6 :(得分:1)
您描述自己需求的方式,让您的课程abstract
成为可能。它会
阻止你实例化基类,并允许你调用函数
它。这也允许您将函数和属性标记为抽象和
强制继承的类来实现它们。
如果您不需要共享代码,那么界面将是一个不错的选择。它允许你 以非常类似于abstarct类的方式实现它并投射你的 实现它。
希望这会增加一些价值。
答案 7 :(得分:0)
对基类使用受保护的构造函数