essage. Since a message can correspond to more than one method, the code of the method that has to be executed can only be found at run time. That means that while an application is executed, it can be found out if the message sent is applicable to the object. If not the application ends up with a run-time error. The fact that the piece of code that should be executed is bound at run-time is called late binding.The hierarchies of the classes are based on the principle of inheritance which is considered one of the most basic of the object-oriented systems. Inheritance is an antisymmetric, transitive, binary relationship that can exist between two classes A and B from which the A is called a subclass of B and B is called a superclass of A. The relationship has many common characteristics with the ancestor/descendant relationship since a class has direct and indirect subclasses as an ancestor has direct and indirect descendants. In general a superclass can have one or more direct subclasses, although the number of direct superclasses that a subclass can have is not the same for all the models. In fact, in all the models, all the classes have at least one superclass but there are some models that do not allow classes to have more than one. These are called single inheritance models and the rest multiple inheritance models. According to the concept of inheritance, the subclasses ca!n inherit methods and attributes from their superclasses. That means that inheritance is the mechanism that allows the generation of new software modules from existing software modules. There are four kinds of inheritances that have slightly different semantics:•Substitution inheritance: if class A is a subclass of class B, then any object of class B can be substituted by an object of the class A. That means that the set of messages that constitute the interface of class A is a superset of the set of messages of class B.•Inclusion inheri...