uvm_factory is an abstract class and has pure virtual methods. uvm_default_factory is the default factory implementation class. There is no particular data type for the factory. It uses uvm_object_wrapper to accept different types. The class has internal override queues to store the override information when set_*_override_by_* methods are called.