Abstract Class or Abstract Base Class
Classes declared not for instatiating objects is called Abstract class. Because they are used only as base classes in inheritance hierarchies, we refer to them as Abstract base classes. These classes can not be used for instantiate objects, because classes are incomplete.
The purpose of an abstract class is primarily to provide an appropriate base class from which other class can inherit and share a common design. Classes that can be used to instantiate objects are called concrete class. Such classes provide implementations of every method they declare (some of the implementations can be inherited).
Abstract classes are too general to create objects. They specify only what is common amoung derived classes. We need to be more specific before we can create objects. Concrete classes provide the specifics that make it resonable to instanciate objects.
Declaring Abstract Class and Abstract Method
Abstract classes are declared with the keyword MustInherit. An abstract class normally contains one or more abstract methods. Abstract method will have the keyword MustOverride in its declaration.
Abstract methods do not provide implementations. A class that contains any abstract methods must be declared as an Abstract.