<分区>
Possible Duplicate:
Why can’t I create an abstract constructor on an abstract C# class?
为什么我不能像这样声明类的抽象构造函数:
public abstract class MyClass {
public abstract MyClass(int param);
}
<分区>
Possible Duplicate:
Why can’t I create an abstract constructor on an abstract C# class?
为什么我不能像这样声明类的抽象构造函数:
public abstract class MyClass {
public abstract MyClass(int param);
}
最佳答案
构造函数只适用于定义它们的类,即不被继承。使用基类构造函数(您必须调用其中之一,即使只是自动调用默认构造函数)但不会被派生类覆盖。您可以在抽象基类上定义一个构造函数——它不能直接使用,但可以通过派生类调用。您不能做的是强制派生类实现特定的构造函数签名。
为了为所有派生类定义一些通用的设置代码,定义一个构造函数(通常是 protected )是完全合理的。当抽象类提供一些依赖于此设置的其他默认行为时,尤其如此。例如:
public abstract class Foo
{
public string Name { get; private set; }
protected Foo( string name )
{
this.Name = name;
}
}
public class Bar : Foo
{
public Bar() : base("bar")
{
...
}
}
关于c# - C# 中的抽象构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2299037/