In reply to Ayush:
As I explain in the previous thread where you asked this question, there is a difference between the code that calls for the construction of a class object, and the code that implements the construction of a class object.
The code that calls for the construction of another class object has a choice of calling new() or create() depending on whether the class you want to construct is registered with the factory. You need to search for material that describes the UVM factory.
Then there is the code you want use that implements the construction of a class object, which is what you normally put inside the body of the new() method. For classes derived from uvm_component, we suggest that you put the minimum amount of code required by SystemVerilog, like calling super.new(), and put the rest of the code in the build_phase(). Then, if and when you extend that class, you can override the code in the build_phase to do something different. You can’t do that with code in the new() method because you are required to call super.new()