Olá Bruno, tudo bem com você?
Isso mesmo, quando vamos navegando entre as classes, vamos encontrar esse método equals()
na maioria das vezes, é normal. Isso porque o Java monta um template de como os métodos devem funcionar e internamente todos os objetos devem ter o método equals(). Por isso, ao entrar em funções mais complexas e achar um método equals, a documentação vai te direcionar para esse método padrão. No entanto é importante lembrar que o método equals() existe para ser sobrescrito e para que cada classe tenha sua implementação própria: o que faz uma Conta ser igual a outra Conta? Caso não haja a implementação, o Java vai simplesmente comparar as referências e se forem dois objetos diferentes, com exatamente os mesmos valores nos atributos, ele vai considerar duas contas diferentes.
O motivo pelo qual o Java consegue utilizar o equals() corretamente, é pela sobrescrita do método. Lembra daquela anotação @Override
? Com ela, sinalizamos para o compilador Java que é um método sobrescrito e quando for utilizado nesta classe, ele que deverá ser chamado, e por isso é utilizado a implementação que fizemos do método equals() para comparar contas.
Portanto, o método equals() que é chamado sempre é o da implementação da classe, e caso ele não seja implementado, aí sim será utilizado o equals() default do Java, que existe justamente para não quebrar todos os códigos e fazer com que métodos, como o contains(), que implementam por debaixo dos panos o método equals() não fiquem jogando exceções para o usuário.
Fico à disposição em caso de dúvidas.
Um grande abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!