双亲委托机制
一、逻辑顺序
1、优先查找是否加载过该class,如果有,直接返回该class。findLoadedClass
缓存查找:
该加载器未加载过该class,查找父类加载器是否加载过,如果父类加载器未加载,查找父类的父类是否加载过,以此类推。
说白了,就是从子类开始查找,一直查找到顶层父类。
子类->父类
2、parent.loadClass. parent= BootClassLoader,加载自己写的class,父类(系统)加载会失败,因为无法找到。所以交由底层子类去加载(PathClassloader)
如果没有加载过该class,则自己不加载,由父类加载,父类如果有父类,继续往上,由父类的父类加载,以此类推。如果父类加载失败,才由子类加载。
说白了,就是从父类开始加载,如果加载失败,再由子类加载,子类加载失败,由子类的子类加载,一直尝试到底层子类。