The second approach can be extended: The class loader is able to load classes dynamically during run-time. A class cannot be loaded in real-time, but there are some useful applications. A new class can be loaded with the objective to replace a loaded class. The class loader then switches from the old class to the newly loaded class. This demonstrates an exchange during the execution.