Bom dia, Maurício.
Se você tiver dois construtores com assinatura diferente, o que será chamado vai ser o com a assinatura chamada. Se você tiver dois construtores com a mesma assinatura (não sei porque faria isso) ele nem compila.
Exemplo:
public class TerminalPresentation implements PresentationInterface {
private final ClienteControllerInterface controller;
private final Scanner scannerTeclado;
public TerminalPresentation(ClienteControllerInterface clienteController) {
controller = clienteController;
scannerTeclado = new Scanner(System.in);
}
public TerminalPresentation(ClienteControllerInterface clienteController) {
controller = clienteController;
scannerTeclado = new Scanner(System.in);
}
}
O código acima gera erro de compilação
O código abaixo será chamado a depender de com que argumentos você chamou
public class TerminalPresentation implements PresentationInterface {
private final ClienteControllerInterface controller;
private final Scanner scannerTeclado;
public TerminalPresentation(ClienteControllerInterface clienteController) {
controller = clienteController;
scannerTeclado = new Scanner(System.in);
}
public TerminalPresentation() {
System.out.Println("Polimorfismo a gente vê por aqui")
}
}
Se resolveu sua dúvida, marca como resolvido! Se não, pode perguntar o que não ficou claro.