Why do we need virtual interfaces in system verilog?

In reply to mseyunni:

Hi tfitz,

Does it mean that by declaring the interface as virtual then all classes using that interface will obtain the same values?
For example, driver will put a value on the virtual interface, then the monitor will get the same value also.
Is this the reason why virtual is used for the interface?

Thanks.

Regards,
Reuben