In reply to UVM_LOVE:
m_base = m_extend; is an example of *upcasting*. In any cast, you are not copying class properties or objects, just the class handle.You have asked very similar questions before. You should look at my short course on SystemVerilog OOP.