Estou confuso sobre abstrações de interface ao usar IoC

Estive recentemente tentando aprender IoC e tenho algumas perguntas com base no seguinte código:

public class WarriorModule : NinjectModule 
{
    public override void Load() 
    {
        Bind<IWeapon>().To<Sword>();
        Bind<Samurai>().ToSelf();
    }
}

Estou tendo problemas para entender o novo conceito de interfaces. Antes de criar uma interface comoIRunnable, implementando a funçãovoid Run(). Com a IoC, agora estou vendo uma interface como algo que apenas mapeia para uma única classe concreta. Assumindo que,como mapearia várias classes concretas para uma interface? Eu continuo lendo que você pode mapear várias interfaces para uma única classe concreta, mas não o contrário (a menos que seja aí que o mapeamento contextual entra em cena).

Supondo que as interfaces sejam mapeadas apenas para um único objeto,quando devo criar uma interface em vez de ter um objeto vinculado a si mesmo? De qualquer maneira, você terá que alterar o mesmo trecho de código quando um mapeamento mudar corretamente.

Edit: Marquei a resposta que fiz porque me ajudou pessoalmente. Ambos os comentários são igualmente informativos.

questionAnswers(2)

yourAnswerToTheQuestion