Dlaczego tworzymy instancję obiektu z Interface zamiast Class?

Wielokrotnie widziałem instancję interfejsu wygenerowaną z klasy. Dlaczego w ten sposób korzysta się z interfejsu? Instancja interfejsu utworzyła się sama z pomocą klasy pochodnej i możemy uzyskać dostęp tylko do tych elementów interfejsu za pośrednictwem tej instancji. Jak to daje przewagę? Jestem zmieszany..

interface IPrint
{
    void Print();
}

class Sample : IPrint
{
    public void Print()
    {
        Console.WriteLine("Print...");
    }

    public void Sample()
    {
        Console.WriteLine("Sample...");
    }
}

class Program
{
    static void Main(string[] args)
    {
        IPrint print = new Sample();
        print.Print();
    }
}

questionAnswers(4)

yourAnswerToTheQuestion