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.

Get Programming Visual Basic .NET, Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.