双亲委派模型是在实现在类加载器之间的。
一般有三种类加载器 启动类加载器 扩展类加载器 应用程序加载器。 在没有自己定义的类加载器出现 我们的应用程序是由这三种类加载器相互配合的。
从名字可以看出 启动类加载器是最顶层的 应用程序是底层的
那么该模型的工作过程就是,如果一个类加载器收到了类加载的请求,他不会自己去尝试加载这个类,而是把请求传递给父类,父类再传递 。 如果最顶层的父类 可以加载请求 类就加载成功,否则,再一级级下来。 也就是说,如果父类可以解决,子类就不会自己去解决它。
到这里有人会觉得很奇怪,那为什么呢?我们知道 不同的类加载器去加载一个类的时候,产生出来的类是不同的。那jvm为了保证 基础类都是相同的,就要让同一个类加载器去加载类。
举一个例子,Object 如果又不用的类加载器去加载 那会有什么样的情况? 结果就是,有不同的Object类。那其他类到底是继承哪个Object?很难说。