How to use class generalization
Generalization lets one M2 element type inherit properties from another. This avoids duplicating property definitions across similar types.
Set a superclass
Section titled “Set a superclass”- Select the element type you want to be the subclass (e.g., Person)
- In the Properties panel, find the Superclasses field
- Add the superclass element type (e.g., Organisational Entity)
The subclass now inherits all properties defined on the superclass. M1 instances of the subclass show both inherited and own properties.
Create an abstract superclass
Section titled “Create an abstract superclass”If the superclass should not be instantiated directly (it exists only to share properties):
- Select the superclass element type
- In the Properties panel, check Is Abstract
Abstract types don’t appear in the Palette — users can only create instances of concrete subclasses.
Multiple inheritance
Section titled “Multiple inheritance”An element type can have multiple superclasses. Properties from all superclasses are inherited and merged.
What’s inherited
Section titled “What’s inherited”- Properties — all property definitions from the superclass, including data type, multiplicity, and default value
- Notation (partially) — subclasses can override notation or inherit from the superclass
- Use generalization to create a common “base” type with shared properties (Description, Status, Owner) that multiple specific types inherit
- Keep inheritance hierarchies shallow — one or two levels deep is usually sufficient
- Abstract superclasses keep the Palette clean by hiding types that shouldn’t be instantiated directly