Вы не можете изменить сигнатуру метода интерфейса в его реализациях.Это просто потому, что нет способа сделать это, что бы не вызывало трудно анализируемых синтаксических ошибок во время выполнения.Интерфейс является контрактом - любой класс, реализующий его, обещает, что он реализует все методы (и переменные ...), которые присутствуют в интерфейсе.
Предположим, что существует метод METH
интерфейса IF1
, который принимает один параметр PAR1
типа TYPE1
.Если вы сейчас напишите класс, который реализует метод METH
с единственным параметром PAR1
типа TYPE2
, то у вас не написан класс, который реализует IF1
.Вызывающая сторона, которая передает параметр типа TYPE1
в метод вашего класса, столкнется с ошибкой преобразования типа (во время выполнения или во время компиляции зависит в некоторой степени от универсальности типов).
Следовательно, невозможно изменить сигнатуру метода интерфейса при его переопределении без создания таких ошибок времени выполнения - ваш класс не реализует интерфейс.Реализация интерфейса означает, что класс будет принимать именно то количество, тип и тип параметров, которые указаны для методов в интерфейсе.В буквальном смысле не существует варианта использования, в котором вы могли бы сознательно захотеть изменить это, все еще утверждая, что ваш класс реализует интерфейс.Что бы вы ни пытались сделать, это не решение проблемы.