c# – 关于私有,公共和受保护构造函数的抽象类的一些问题

前端之家收集整理的这篇文章主要介绍了c# – 关于私有,公共和受保护构造函数的抽象类的一些问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的第一个问题:抽象类中受保护和公共构造函数之间的区别是什么?

我的第二个问题:如果抽象类有一个私有构造函数,它是否有意义?

提前致谢!

解决方法

一种可能的设计,它将在抽象类上使用私有构造函数
  1. public abstract class BaseClass
  2. {
  3. private BaseClass(Object param)
  4. {
  5. //Do something with parameters
  6. }
  7.  
  8. //Provide varIoUs methods that descendant classes will know how to perform
  9.  
  10. public static BaseClass FromObject(Object value)
  11. {
  12. //Based on object,choose which type of derived class to construct...
  13. }
  14.  
  15. private class HiddenDerivedA : BaseClass
  16. {
  17. public HiddenDerivedA(Object value)
  18. : base(value)
  19. {
  20. }
  21. }
  22.  
  23. private class HiddenDerivedB : BaseClass
  24. {
  25. public HiddenDerivedB(Object value)
  26. : base(value)
  27. {
  28. }
  29. }
  30. }

如果派生的实现与用于构造它们的选择逻辑紧密耦合,并且您希望提供与其余代码的高度绝缘,则此模式非常有用.它使您免除了除了您明确指定的那些之外必须支持其他继承者的责任,并允许您将所有私有状态从基类公开到派生类.

猜你在找的C#相关文章