When should I do $cast with .clone() or not?

In reply to dave_59:

Good discussion here.
For me its is not too clear to understand as I am new to the object oriented language. I had seen this $cast and clone() at several driver codes. But it is really hard to understand the purpose
Could you please explain the (1)$cast, (2)clone() and (3)$cast+clone() with an simple lucid SV examples ?

Thanks and Regards,
karunani