d) Método hashCode()
A função do método hashCode() é calcular um valor de um código numérico para o objeto em questão.
Esse código numérico seria representativo desse objeto. Note que ele também é um método nativo. Por padrão o método retorna o endereço de memória do objeto, pois dois objetos não podem ocupar o mesmo endereço de memória, pelo menos não segundo as especificações da JVM da Sun. Entretanto, a especificação JAVA define que se dois objetos são iguais eles devem retornar o mesmo hashCode().
Essa condição acaba por relacionar o método equals() com o método hashCode(), de forma que, rigorosamente falando, ao redefinirmos o método equals() deveremos necessariamente redefinir também o método hashCode() de forma que esses objetos iguais tenham o mesmo hashCode.