密封类: 当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承.
class="sentence" style="font-family: 'Microsoft YaHei UI', 'Microsoft YaHei', SimSun, 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif !important;" data-source="To determine whether to seal a class, method, or property, you should generally consider the following two points:" data-guid="7ebed9c0cb5f6655f694a17afb4b8b99">若要确定是否密封类、方法或属性,通常应考虑以下两点:
派生类利用自定义类的功能所获得的可能好处。
modify your classes in such a way that they would no longer work correctly or as expected." data-guid="fff1c6dba6d93ab55297786748c0e294">派生类在修改类之后导致其无法正常工作或按预期工作的可能性。
私有构造函数是一种特殊的实例构造函数。 它通常用在只包含静态成员的类中。 如果类具有一个或多个私有构造函数而没有公共构造函数,则其他类(除嵌套类外)无法创建该类的实例。
声明空构造函数可阻止自动生成默认构造函数。 注意,如果不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。 但是,通常显式地使用 private 修饰符来清楚地表明该类不能被实例化。
当没有实例字段或实例方法(如 System.Math类)时或者当调用方法以获得类的实例时,私有构造函数可用于阻止创建类的实例。 如果类中的所有方法都是静态的,可考虑使整个类成为静态的。
对类构造函数应用private修饰符时,则禁止外部类创建该类的实例。既然不能实例化,那么这个类还有什么用处? 但实际上这是一个功能极其强大的特性。 最明显的是,如果类只通过静态方法和字段来提供功能,那么就常常使用私有构造函数。框架类库FCL中的System.Math类就是一个很经典的例子。 System.Math类有两个静态字段:pi和e(自然对数底数),还有一些返回三角函数值的方法。这些方法都作为内置函数,所以,程序没有必要为使用这些字段和方法而创建Math类的实例。 一个不需要实例化的类:其方法是静态的,并且没有与类实例相关的状态信息。
[ 本文地址:http://www.cnblogs.com/Interkey/p/3408938.html ]
构造函数私有只能禁止外部类对该类进行实例化,却不能禁止在该类内部创建实例。 私有构造函数的特性也可以用于管理对象的创建。虽然私有构造函数不允许外部方法实例化这个类,但却允许此类中的公共方法(有时也称为工厂方法,factory method)创建对象(如Singleton模式)。也就是说,类可以创建自身的实例、控制外界对它的访问,以及控制创建的实例个数。
只有私有构造函数类只能在此类的内部(嵌套类)访问其私有构造函数. 密封类则可以有公有构造函数(如String类).
密封类与只有私有构造函数类都无法被继承,而只有私有构造函数类可在类内部(嵌套类)继承!