NotInheritable Classes
The opposite side of the design coin from MustInherit is
NotInheritable. Just as classes
marked with MustInherit are considered abstract,
classes marked with NotInheritable are considered
sealed
. Although an abstract class is intended
to be derived-from and to provide a template for its subclasses to
follow, a sealed 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
NotInheritable to prevent accidental inheritance.
If the declaration of Window in Example 6-3 is
changed from MustInherit to
NotInheritable, 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”[11] and also
when your class consists of nothing but shared methods and
properties.
[11] Visual Studio .NET Combined Collection: Base Class Usage Guidelines.