Short answer
They form a delegation hierarchy: a loader first asks its parent before loading a class itself (parent-first / delegation model).
Explanation
The Bootstrap loader (written in native code, null in Java) loads core JDK classes like java.lang.*. The Platform loader (called Extension loader before Java 9) loads platform modules. The Application (System) loader loads classes from the application classpath. Delegation prevents core classes from being spoofed and ensures a single definition of each core type.
Common mistakes
- Forgetting the Platform loader replaced Extension in Java 9.
- Not explaining delegation order.