A class hierarchy or inheritance tree in computer science is a classification of object types, denoting objects as the instantiations of classes inter-relating the various classes by relationships such as "inherits", "extends", "is an abstraction of", "an interface definition". In object-oriented programming, a class is a template that defines the state and behavior common to objects of a certain kind. A class can be defined in terms of other classes.
The concept of class hierarchy in computer science is very similar to taxonomy, the classifications of species.
The relationships are specified in the science of object-oriented design and object interface standards defined by popular use, language designers and standards committees for software design like the Object Management Group.
The class hierarchy can be as deep as needed. The Instance variables and methods are inherited down through the levels and can be redefined according to the requirement in a subclass. In general, the further down in the hierarchy a class appears, the more specialized its behavior. When a message is sent to an object, it is passed up the inheritance tree starting from the class of the receiving object until a definition is found for the method. This process is called upcasting.