Achei a solução um pouco confusa, pois a classe Maquina já tem o próprio método bater() e não utilizar em nenhum momento o método bater fornecido via injeção de dependência.
Acredito que desta forma faria mais sentido, pois a classe Maquina passa a utilizar o método bater fornecido pela instância injetada no construtor (E desta forma também o método bater da Maquina não poderia retornar uma string):