C# 抽象类与构造函数
由于抽象类不能实例化,为什么抽象类中仍然允许构造函数C# 抽象类与构造函数,c#,abstract-class,C#,Abstract Class,由于抽象类不能实例化,为什么抽象类中仍然允许构造函数 public abstract class SomeClass { private string _label; public SomeClass(string label) { _label=label; } } 任何派生类的构造函数仍然必须调用抽象类中的构造函数。如果您根本不指定任何构造函数,那么所有派生类将只需使用编译器提供的默认无参数构造函数 有一个构造
public abstract class SomeClass
{
private string _label;
public SomeClass(string label)
{
_label=label;
}
}
任何派生类的构造函数仍然必须调用抽象类中的构造函数。如果您根本不指定任何构造函数,那么所有派生类将只需使用编译器提供的默认无参数构造函数
有一个构造函数是绝对有意义的,但在这种情况下,“public”实际上等同于“protected”。因为您仍然可以执行以下操作:
public class SomeChildClass : SomeClass
{
public SomeChildClass(string label) : base(label){ }
public string GetLabel() { return _label; }
}
如您所见,子类可以调用基构造函数(在抽象类上)来创建自身的实例
正如乔恩所说,
public
真的没有必要。它实际上与受保护的不重复的可能重复相同-即询问公共构造函数的用途是什么,这询问构造函数的用途是什么