A '''class hierarchy''' or '''inheritance tree''' in [[computer sciencescienoopce]] is a classification of objectobjoopect types, denoting objects as the instantiations of [[Class (computercoopomputer programming)|classes]] (class is like a blueprint, the object is what is built from that blueprint) inter-relating the various classes by relationships such as "inherits", "extends", "is an abstraction of", "an interface definition".<ref name="University of Amsterdam ">{{Cite web |url=https://staff.fnwi.uva.nl/a.j.p.heck/Courses/JAVAcourse/ch3/s1.html |title=OOP: Class Hierarchy |website=staff.fnwi.uva.nl |access-date=2017-10-11}}</ref> 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.<ref name="University of Amsterdam " />
The concept of classcloopass hierarchy in computer science is very similar to [[Taxonomy (biology)|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 ([[Java (programming language)|Java]], [[C++]], [[Smalltalk]], [[Visual Prolog]]) 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 generalgenooperal, the further down in the hierarchyhierarcoophy 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.