C# C在抽象类中可能有构造函数吗?
我有一个抽象类,它调用一个静态方法,到目前为止,它不需要任何参数。这种情况最近发生了变化。实际上,静态方法存在于另一个类中并设置BaseMessageDirectory的值,但在下面的示例中,我简化了一些事情 因此,现在我想创建派生类,使它们能够在继承过程中初始化父类中的一些必需属性,这可能吗 例如C# C在抽象类中可能有构造函数吗?,c#,C#,我有一个抽象类,它调用一个静态方法,到目前为止,它不需要任何参数。这种情况最近发生了变化。实际上,静态方法存在于另一个类中并设置BaseMessageDirectory的值,但在下面的示例中,我简化了一些事情 因此,现在我想创建派生类,使它们能够在继承过程中初始化父类中的一些必需属性,这可能吗 例如 public abstract class ParentClass { protected string BaseMessageDirectory;
public abstract class ParentClass
{
protected string BaseMessageDirectory;
protected ParentClass(EnumOperationType operationType)
{
if(operationtype == 1)
{
BaseMessageDirectory = "one";
}
else
{
BaseMessageDirectory = "two";
}
}
}
是的,您可以定义构造函数,所有子类都必须调用它:
public class Child : ParentClass
{
public Child() : base(EnumOperationType.One) { ... }
}
是的,您可以定义构造函数,所有子类都必须调用它:
public class Child : ParentClass
{
public Child() : base(EnumOperationType.One) { ... }
}
所以如果我理解正确的话-抽象类中的构造函数对于子类来说是必需的?是的。。子类必须调用一个基类构造函数。是的,类必须从其构造函数调用其父类的一个构造函数-如果抽象类具有默认构造函数,则不需要明确指定它,尽管可以。我想至少指定其中一个。如果基类中也有一个无参数构造函数,那么它将是被调用的默认值。虽然你可以像lee说的那样这样做,但我认为这不是一个好主意,因为你的抽象类正在做一些影响其子行为的事情。问题是为什么父类应该为其子类选择基目录?如果代码中添加了具有新操作类型的新子类,会发生什么情况?您也应该更改父类。我认为每个子类都可以在其构造函数中设置自己的基目录,或者可以有一个BaseDirectoryProvider策略模式,可以为父类中的每个类提供此信息。因此,如果我理解正确,抽象类中的构造函数对于子类来说是必需的上课?是的。。子类必须调用一个基类构造函数。是的,类必须从其构造函数调用其父类的一个构造函数-如果抽象类具有默认构造函数,则不需要明确指定它,尽管可以。我想至少指定其中一个。如果基类中也有一个无参数构造函数,那么它将是被调用的默认值。虽然你可以像lee说的那样这样做,但我认为这不是一个好主意,因为你的抽象类正在做一些影响其子行为的事情。问题是为什么父类应该为其子类选择基目录?如果代码中添加了具有新操作类型的新子类,会发生什么情况?您也应该更改父类。我认为每个子类都可以在其构造函数中设置自己的基目录,或者可以有一个BaseDirectoryProvider策略模式,为父类中的每个类提供此信息