11.5 NotInheritable ClassesThe opposite side of the design coin from abstract is not inheritable . Although an abstract class is intended to be derived from and to provide a template for its subclasses to follow, a not-inheritable class does not allow classes to derive from it at all. The NotInheritable keyword placed before the class declaration precludes derivation. Classes are most often marked not-inheritable to prevent accidental inheritance. If the declaration of Window in Example 11-3 is changed from MustInherit to NotInheritable (eliminating the MustOverride keyword from the DrawWindow( ) declaration as well), the program will fail to compile. If you try to build this project, the compiler will return the following error message: C:\...Module1.vb(13): 'NotInheritable' classes cannot have members declared 'MustOverride'. Microsoft recommends using NotInheritable "when it will not be necessary to create derived classes" [1] and also when your class consists of nothing but shared methods and properties.
|