Class loader
Start class loader: load the Java core classes, such as System, String and so on.
Expand the class loader: load jre expansion libraries.
Application class loader: loading packages and classes jar under CLASSPATH, i.e. the programmer defined classes.
Custom loader: user-defined loader.
Delegate parents
When the class loader receives a class loading request, first try to throw so that the parent loader load, load successful return, the parent can not re-load the loader to load it.
Objective: to ensure that the same type of a different class loader is obtained in the same class, to avoid tampering with the system programmer's classes.
-------------
reference:
https://juejin.im/post/5a1fad585188252ae93ab953#heading-12
https://blog.csdn.net/weixin_37077950/article/details/90249151