A base class, also called a superclass, is a computer object that acts as a foundation for one or more derived classes. Any computer language that is capable of inheritance can create a base class. Depending on their precise type, base classes may or may not be capable of initialization — assigning an initial value to an object — on their own, but they always give some kind of common functionality to any class that inherits from them. There is never a limit to the number of derived classes, or subclasses, that base classes can have, but there may be a limit, depending on the computer language, to the number of base classes a derived class can have. Languages that allow a derived class to have only one base are said to enforce single inheritance, while those that allow a derived class to have multiple base classes use multiple inheritance.
Concrete base classes can be initialized on their own; that is, an object of the base class type can be made. If a class Example is a base for a derived class Example2, an object of type Example2 and an object of type Example can both be made. An object of type Example can only be made by explicitly calling for that object type; creating an object of type Example2 does not make a secondary object of type Example. In each case, the object type being created builds an instance of itself only.
Abstract base classes, by contrast, cannot be initialized on their own, which means an object of the base class cannot be made by itself. If a class Example3 is an abstract base for a derived class Example4, only an object of type Example4 can be made. Even though type Example4 includes data from the type Example3, attempting to make an object solely of type Example3 will result in an error. This functionality can be useful at times, particularly if class Example3 contains private data that should be tightly regulated.
Depending on the language in which it appears, a base class can have slightly different behaviors, and markedly different names. In Java®, base classes are always referred to by that name, while in C++, depending on their structure, they can be called virtual classes. The differences in name and functionality, while significant in terms of the computer languages being used, do not imply major differences in the principle behind the classes. A base class is always used to encapsulate common functionality and data for its derived classes, regardless of the language.