У нас есть класс с публичными методами. Этот класс используется в 100500 различных местах.
Проходит время, мы решаем расширить функциональность класса и добавить реализацию интерфейса, который раньше реализован не был.
Да вот незадача, имя и аргументы одного из методов нового интерфейса полностью совпадает с одним из публичным методов нашего класса. При этом два метода: старый и новый имеют совершенно различное значение и сливать их в один метод нельзя.
Получается:
1) слить мы методы в один не можем, у них разное назначение;
2) переименовать старый метод не можем - он уже много где используется;
3) реализовать новый метод нового интерфейса все-таки надо.
В этом случае приходит на выручку конструкция "INewInterface.SameMethod()".