Oi gente,
só para confirmar mesmo: o método contains() da classe ArrayList chama o método equals() da classe Object, que compara as referências e retorna V ou F. Então no caso de duas referências serem inicializadas com objetos que possuem os mesmo valores, o método equals da calsse Object não irá detectar que se trata de objetos idênticos. Assim, para que isso aconteça ele deve ser sobrescrito na classe mais específica (como foi o exemplo dado com a classe Conta), certo?