Oi Fred,
apenas para esclarecer para quem ler sua dúvida, o que deixou de compilar não é a classe ContaPoupanca
, mas sim a TestaOrdenacao
. Algo como:
ContaPoupanca c1 = new ContaPoupanca();
c1.deposita(500);
ContaPoupanca c2 = new ContaPoupanca();
c2.deposita(200);
ContaPoupanca c3 = new ContaPoupanca();
c3.deposita(150);
List<ContaPoupanca> contas = new ArrayList<>();
contas.add(c1);
contas.add(c3);
contas.add(c2);
Collections.sort(contas);
A última linha aqui, deixou de compilar, correto?
O que acontece aqui é exatamente o que você respondeu nesse exercício: "a interface é a garantia de que o metodo estará lá".
O método sort
da Collections precisa ter a garantia de que o método compareTo
vai existir nos objetos dessa lista de ContaPoupanca, isto é, para compilar, ele precisa que a ContaPoupanca garanta que terá o método implementado... e o implements Comparable
é que dá essa garantia.