Я предполагаю, что C # здесь, потому что у другого вопроса был тег C #
Очевидное преимущество заключается в том, что в будущем у вас есть другой класс, который уже наследуется от базового класса,и вы хотите передать это методу, который принимает.,,
Вы не можете поместить туда первый базовый класс , потому что C # не поддерживает множественное наследование, поэтому вы никогда не сможете передать объект, который подклассирует другой класс.
Однако вы можете поместить туда interface , поскольку новый объект всегда может реализовать Интерфейс, даже если он логически должен быть производным от базового класса.
Наличие обоих означает базовый классможет реализовать интерфейс, который подходит вам сейчас, потому что вы можете использовать общую логику, вам не нужно повторяться или у вас есть куча статических методов в классе "помощника".
Также вВ будущем, если у вас есть другие классы, которые вы хотите использовать, им не нужно наследовать базовый класс, тогда вы можете просто реализовать интерфейс.
Надеюсь, это имеет смысл:)