  Object-oriented (OO) inheritance allows the definition of families of classes
in a hierarchical way. In behavioural inheritance, a strong version, it should
be possible to substitute an object of a subclass for an object of its
superclass without any observable effect on the system. Behavioural inheritance
is related to formal refinement, but, as observed in the literature, the
refinement constraints are too restrictive, ruling out many useful OO
subclassings. This paper studies behavioural inheritance in the context of ZOO,
an object-oriented style for Z. To overcome refinement's restrictions, this
paper proposes relaxations to the behavioural inheritance refinement rules. The
work is presented for Z, but the results are applicable to any OO language that
supports design-by-contract.
