Not using virtual interface

In UVM Cookbook Page 73 it is written that :

Sometimes a virtual interface approach cannot be used. In which case there is a second or alternative approach to
DUT-TB communication which is referred to as the abstract/concrete class approach that may be used. However, as long
as it can be used, virtual interfaces is the preferred and recommended approach.
with respect to this

My question is :

Q1) What are the scenarios where a virtual interface approach cannot be used?

Q2) What is this second abstract/concrete class approach which can be used in these scenarious?