Inheritance provides the capability to create a hierarchy of classes where common structure and behavior are shared among classes. The term superclass is the name given to the class holding the common information. The descendants are called subclasses. A subclass inherits all attributes, operations, and relationships that are defined for all of its superclasses. There are two ways to find inheritance in any system: generalization and specialization. Generalization provides the ability to create superclasses to encapsulate structure and/or behavior common to several classes. Specialization provides the capability to create subclasses that represent refinements or additions to the structure and/or behavior specified in the superclass.