Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Para que utilizar o cast?

Me surgiu uma dúvida durante esta aula...

Podemos criar vários métodos com o mesmo nome, porém, com parâmetros diferentes.

Então por qual motivo precisamos fazer um cast? Não era mais fácil apenas fazer um método recebendo como parâmetro um objeto do tipo Conta? Dessa forma, se viesse outro tipo de dado... o equals da classe pai iria realizar o tratamento e não precisaríamos fazer o cast, certo?

Código da aula:

@Override
public boolean equals(Object ref) {
    Conta outra = (Conta) ref;
    ...
}

Sugestão:

@Override
public boolean equals(Conta ref) {
    ...
}
1 resposta
solução

Bom dia Richard, tudo bem?

Então cara, seria uma otima se ele fizesse isso, mas quando você muda a assinatura, ele já solta um erro, dizendo que você deve sobreescrever um método ou implementar, pois, em tempo de compilação o método equals(Object ref) não tem como saber que esse parâmetro do tipo Object é uma Conta, ele não consegue dar match com o pai, pois não reconhece a assinatura, que são diferentes, uma é equals(Object ref) e outra equals(Conta ref).

Pense no seguinte cenário:

Um object pode ser um do tipo Conta, Integer ou Double? Se puder, ele não pode deixar você atribuir a uma Conta. A não ser que você confie que, em tempo de execução esse objeto realmente vai ser uma Conta, por isso tem que deixar o cast explicito ali.

Espero que tenha ficado claro.

Qualquer duvida, pode perguntar :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software