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

前端之家收集整理的这篇文章主要介绍了c# – 抽象类中有一个构造函数是否很好?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在抽象类中有一个构造函数是否很好?

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

以下是我的课堂结构.

  1. public abstract class Scheduler
  2. {
  3. private Storyboard timer;
  4.  
  5. protected Scheduler()
  6. {
  7. // initialize the timer here.
  8. timer = new Storyboard();
  9.  
  10. this.PollInterval = 60;
  11. }
  12. }
  13.  
  14.  
  15. public class TaskScheduler : Scheduler
  16. {
  17. public TaskScheduler()
  18. : base()
  19. {
  20.  
  21. }
  22. }

解决方法

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

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

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

  1. public abstract class NamedFoo
  2. {
  3. private readonly string name;
  4. public string Name { get { return name; } }
  5.  
  6. protected NamedFoo(string name)
  7. {
  8. this.name = name;
  9. }
  10. }
  11.  
  12. public class DerivedFooWithConstantName
  13. {
  14. public DerivedFooWithConstantName() : base("constant name")
  15. {
  16. }
  17. }

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

猜你在找的C#相关文章