К какому классу в данном случае будет обращаться интерфейс?

В данном случае интерфейс будет обращаться к классу, который реализует этот интерфейс.

Интерфейс в программировании - это контракт, который определяет набор методов и свойств, которые должны быть реализованы классом.

Когда класс реализует интерфейс, он обязуется предоставить реализацию всех методов и свойств, объявленных в интерфейсе. В то же время, класс может предоставлять свои собственные методы и свойства, которые не объявлены в интерфейсе.

Чтобы использовать интерфейс, необходимо создать экземпляр класса, который его реализует. Затем можно обратиться к методам и свойствам интерфейса через этот экземпляр класса.

Например, предположим, что есть интерфейс IAccount:

public interface IAccount
{
    void Deposit(decimal amount);
    void Withdraw(decimal amount);
    decimal GetBalance();
}

Теперь создадим класс BankAccount, который реализует этот интерфейс:

public class BankAccount : IAccount
{
    private decimal balance;

    public void Deposit(decimal amount)
    {
        balance += amount;
    }

    public void Withdraw(decimal amount)
    {
        if (amount <= balance)
        {
            balance -= amount;
        }
        else
        {
            throw new Exception("Insufficient funds");
        }
    }

    public decimal GetBalance()
    {
        return balance;
    }
}

Теперь, чтобы использовать интерфейс IAccount, мы можем создать экземпляр класса BankAccount и работать с ним через интерфейс:

IAccount account = new BankAccount();
account.Deposit(100);
account.Withdraw(50);
decimal balance = account.GetBalance();

Таким образом, интерфейс обращается к классу BankAccount, но при этом мы можем легко заменить BankAccount на другой класс, который также реализует интерфейс IAccount, не меняя код использующего интерфейс. Это даёт гибкость и упрощает разработку программного кода.