Since Tomcat can load more than one webapp at once, and those webapps can work separately, and do not disturb each other, and they work in same JVM. So I am very confused a
In normal Java applications when a classloader is asked to load a class it forst delegates the request to it's parent class loader and then loads it if parent class loaders cannot find the requested class.
For web application servers this slightly differs. There are generally different class loader for each web app deployed in a web application server like tomcat. For Tomcat it looks like below -

So for web apps class loading resource happens in following order -
But note if web application class loader is configured with delegate="true" then order is changed -
For more details you can check Apache Tomcat's Class Loader HOW-TO page.