OPC UA defines a type model supporting one object-oriented type hierarchy for ObjectTypes. Although the specification does not restrict those hierarchies to be single inheritance (i.e. a type can only have one super-type) it only specifies the semantic (inheritance rules) for single inheritance.
In general, good object-oriented design is accomplished by not over-using inheritance but instead by using composition to aggregate an object providing several functionalities [GH95, FF04].
Interfaces and AddIns complement the type model and can be used when subtyping is not suitable for the required extension. They:
- allow enhancing multiple types at arbitrary positions in the type hierarchy.
- also allow enhancing just instances.