Вызов выполняется по интерфейсу, в данном случае Class1.
Объект obj имеет два метода getname: один в интерфейсе Class1 и один в интерфейсе Class3. В этом случае вызывается тот, что в интерфейсе Class1, но реализация этого метода из интерфейса class1 была переопределена в Class2, и поскольку объект reel имеет класс Class3, он возвращает реализацию, выполненную в class2.
Окончательный ответ - Class2
В ООП это называется «полиморфизм».