Run phase execution flow

Hi,
As far as I know , run_phase in uvm components are executed in parallel.
Does that also mean that the run_phase of base classes get triggered implicitly.
If yes, why do we explicitly call super.run_phase?

As I saw in some other thread. This is how run_phase gets executed.

fork
 driver.run_phase();
 monitor.run_phase();
 test.run_phase();
 //etc.
join_none

My question is : Lets say base_driver, base_monitor and base_test has run_phase too. Will they be implicitly triggered? If yes , why do we explicitly call super.run_phase().

Thanks,
Suyog

In reply to suyog.marvell:

Since run_phase() is a virtual method, only the most extended definition of run_phase gets called (or triggered as you say). You call super.run_phase() depending on if your extension of run_phase is adding functionally. You would not call super.run_phase if you wanted to completely override it.