Magento 2 virtual type allows user to change the arguments of a specific injectable dependency and change the behavior of a particular class. This allows user to use a customized class without affecting other classes that have a dependency on the original.