类加载器的双亲委托模型并不是一个强制的约束模型,而是 Java 设计者推荐给开发者的一种加载器方式。上面类加载器的父子关系一般不会以继承的方式实现,而是采用组合的关系来复用父类加载器的代码。
工作过程:如果一个类加载器收到了类加载的请求,它首先不会自己去加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求都应该传送到顶层的启动类加载器,只有当父加载器无法完成这个加载请求时,子加载器才会尝试自己去加载。
为什么要有双亲委派模型呢?原因是双亲委派模型可以保证 Java 程序的稳定性。比如你有一个类,在不采用双亲委派模型的情况下,可能会有不同的加载器去加载这个类,不同类加载器加载出来的 Class
文件必然不相同,这样就造成了不一致性