Mermaid Class Diagram Syntax
A class diagram opens with classDiagram, then declares class bodies and the relationship arrows between them.
| Construct | Meaning | Example |
|---|---|---|
class Name { ... } | Declares a class with a body listing its fields and methods. | classDiagram
class Shape {
+area() double
} |
+field / -field | + marks a public member, - marks a private member (# marks protected). | classDiagram
class Account {
-double balance
+deposit(amount) void
} |
<<abstract>> | Marks a class as abstract; <<interface>> marks it as an interface. | classDiagram
class Shape {
<<abstract>>
+area() double
} |
A <|-- B | Inheritance: B extends A. The open triangle points at the parent. | classDiagram
class Shape
class Circle
Shape <|-- Circle |
A *-- B | Composition: A owns B and controls its lifetime. | classDiagram
class Order
class LineItem
Order *-- LineItem |
A --> B | Plain association: A references B without owning its lifecycle. | classDiagram
class Customer
class Order
Customer --> Order |
"1" *-- "many" | Quoted cardinality labels set the multiplicity on each end of a relationship. | classDiagram
class Order
class LineItem
Order "1" *-- "many" LineItem : contains |
Everything together
Mermaid source
classDiagram
class Shape {
<<abstract>>
+area() double
}
class Circle {
-double radius
+area() double
}
class Order {
-string id
+total() double
}
class LineItem {
-int quantity
}
Shape <|-- Circle
Order "1" *-- "many" LineItem : contains