Since we can't refer or instantiate an actual interface in a class (Class is dynamic). We need a virtual interface to provide a connection point to allow classes to access the signals in the interface.
A virtual interface is nothing but a pointer to an actual interface.
You can refer to cookbooks. It's free here you can download it (uvm-cookbook)