EStou com dúvida porque o método equals interfere no contains mesmo sendo de classes diferentes. Por exemplo :
package br.com.bytebank.banco.test.util;
import java.util.ArrayList;
import br.com.bytebank.banco.modelo.Conta;
import br.com.bytebank.banco.modelo.ContaCorrente;
public class TesteArrayListEquals {
public static void main(String[] args){
ArrayList<Conta> lista = new ArrayList<Conta>();
Conta cc1 = new ContaCorrente(22, 22);
Conta cc2 = new ContaCorrente(22, 22);
lista.add(cc1);
boolean existe = lista.contains(cc2);
System.out.println("Já existe? " + existe);
for(Conta conta : lista){
System.out.println(conta);
}
}
}
Se não tiver o método equals em Conta, o método contains retorna false. Porém, se existir o método equals, teremos contains retornando true. Mas a contains não é um método de lista(que é um ArrayList) como ele interfere no equals, que é o método de Conta( em que cada referência cc1, cc2 está dentro de lista).