In reply to muneebullashariff:
As you noticed, uvm_heartbeat is not registered with the factory. Also, none of its methods are virtual. So any use of your extended uvm_heartbeat would have to know about it anyway. So using the factory does not make much sense.