Inheritance is a special relationship between classes that exploits the commonality in managed object class definitions. Managed object classes are arranged in a hierarchy known as the inheritance tree (also known as the object class hierarchy, or the class tree). A class in this tree is known as a sub-class of its parent in the tree (its superclass). A subclass inherits all characteristics of all of its subclasses. There is one basic managed object class, <#2277#> top<#2277#>, and all other classes are subclasses of <#2278#> top<#2278#>. The classes are more specialized going down the inheritance tree. Inheritance is used in specifying object classes. A new object class is specified as a subclass of a defined class. Only additional characteristics (attributes, operations, behaviour, and/or notifications) are specified. The refinement method uses strict-single inheritance (inheritance of all characteristics from a single superclass). A complementary approach is the construction method, which uses strict multiple inheritance (inheritance of all characteristics from each of several superclasses). Once a class has been designed and formally specified, the class is given a globally unique registered identifier which is used in communications. The instance behaviour that corresponds to this superclass-subclass relationship is that an instance of a particular managed object class has the ability to act as either its defined class, or any of its superclasses (since the superclasses' characteristics are inherited). This capability is known as polymorphism. For example, the class ;SPM_quot;modem;SPM_quot; could be defined as a subclass of ;SPM_quot;equipment;SPM_quot;, so that in instance of ;SPM_quot;modem;SPM_quot; also could also behave as an instance of ;SPM_quot;equipment;SPM_quot;. In some cases, it may be necessary for implementation reasons to restrict the set of superclasses that an instance can imitate.