An abstract class only allows other classes to inherit from
it and cannot be instantiated. When we create an abstract class, it should have
one or more completed methods but at least one or more uncompleted methods and these
must be preceded by the key word abstract. If all the methods of an abstract
class are uncompleted then it is the same as an interface, but there is a
restriction that it cannot make a class inherit from it, which means it can not
work as a base class.