微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 抽象类中有一个构造函数是否很好?

在抽象类中有一个构造函数是否很好?

创建抽象类的构造函数一个很好的编程实践吗?由于抽象类不能被初始化,所以它们的子类被初始化.

以下是我的课堂结构.

public abstract class Scheduler
{
    private Storyboard timer;

    protected Scheduler()
    {
        // initialize the timer here.
        timer = new Storyboard();

        this.PollInterval = 60;
    }
}


public class TaskScheduler : Scheduler
{
    public TaskScheduler()
        : base()
    {

    }
}

解决方法

是的,这是非常好的.只是因为构造函数只能由派生类调用并不意味着它不会有用.例如,您可能有一个抽象类,它表示某种命名实体 – 将该名称作为构造函数参数是有意义的.

这可能值得使构造函数受到保护,使得更加明显的是,您不能仅仅从别处调用它.

请注意,抽象类中有一个构造函数(或多个构造函数)会强制派生类构造函数通过它,但不会强制派生类具有相同的构造函数.例如:

public abstract class NamedFoo
{
    private readonly string name;
    public string Name { get { return name; } }

    protected NamedFoo(string name)
    {
        this.name = name;
    }
}

public class DerivedFooWithConstantName
{
    public DerivedFooWithConstantName() : base("constant name")
    {
    }
}

在这种情况下,派生类构造函数是“删除”参数(通过提供一个常量值作为抽象类构造函数的参数),但在其他情况下,它可以“添加”所需的参数或混合.

原文地址:https://www.jb51.cc/csharp/94293.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐