>

密封类与唯有私有结构函数类的分别

- 编辑:金沙国际平台登录 -

密封类与唯有私有结构函数类的分别

密封类: 当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承.

若要确定是否密封类、方法或属性,通常应考虑以下两点:

  • 派生类利用自定义类的功能所获得的可能好处。

  • 派生类在修改类之后导致其无法正常工作或按预期工作的可能性。

私有构造函数是一种特殊的实例构造函数。 它通常用在只包含静态成员的类中。 如果类具有一个或多个私有构造函数而没有公共构造函数,则其他类无法创建该类的实例。

声明空构造函数可阻止自动生成默认构造函数。 注意,如果不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。 但是,通常显式地使用 private 修饰符来清楚地表明该类不能被实例化。
当没有实例字段或实例方法(如 System.Math类)时或者当调用方法以获得类的实例时,私有构造函数可用于阻止创建类的实例。 如果类中的所有方法都是静态的,可考虑使整个类成为静态的。

对类构造函数应用private修饰符时,则禁止外部类创建该类的实例。既然不能实例化,那么这个类还有什么用处? 但实际上这是一个功能极其强大的特性。 最明显的是,如果类只通过静态方法和字段来提供功能,那么就常常使用私有构造函数。框架类库FCL中的System.Math类就是一个很经典的例子。 System.Math类有两个静态字段:pi和e,还有一些返回三角函数值的方法。这些方法都作为内置函数,所以,程序没有必要为使用这些字段和方法而创建Math类的实例。 一个不需要实例化的类:其方法是静态的,并且没有与类实例相关的状态信息。

[本文地址:]

构造函数私有只能禁止外部类对该类进行实例化,却不能禁止在该类内部创建实例。 私有构造函数的特性也可以用于管理对象的创建。虽然私有构造函数不允许外部方法实例化这个类,但却允许此类中的公共方法(有时也称为工厂方法,factory method)创建对象(如Singleton模式)。也就是说,类可以创建自身的实例、控制外界对它的访问,以及控制创建的实例个数。

只有私有构造函数类只能在此类的内部访问其私有构造函数. 密封类则可以有公有构造函数.

密封类与只有私有构造函数类都无法被继承,而只有私有构造函数类可在类内部继承!

本文由编程发布,转载请注明来源:密封类与唯有私有结构函数类的分别