In reply to peter:
These phase methods are defined as virtual functions/tasks in the UVM base class uvm_component. Once declared virtual, they are always virtual in all derived class method overrides. This is regardless of using the virtual keyword in the function task overrides, they are still virtual methods because of the base class definition.
If you are having trouble understanding how virtual methods work, please see my SystemVerilog OOP for UVM Verification.