¡Hola Kevin!
Entiendo tu confusión sobre por qué se sobrescribe el método equals y hashCode dentro de la clase. En realidad, la razón principal por la que se hace esto es para que el objeto pueda ser comparado correctamente con otros objetos de la misma clase.
Al sobrescribir el método equals, puedes comparar dos objetos de la misma clase para determinar si son iguales o no. Y al sobrescribir el método hashCode, puedes asegurarte de que los objetos se almacenen correctamente en las colecciones de Java, como HashSet o HashMap.
Respecto a tu preocupación sobre la dificultad que esto puede presentar para otros programadores, es cierto que puede ser un poco confuso al principio. Pero es una práctica común en Java y, una vez que te acostumbras, se vuelve más fácil de entender.
En cuanto a la aplicación de estos métodos, es importante tener en cuenta que el método hashCode debe devolver un valor único para cada objeto, y el método equals debe comparar todos los atributos relevantes del objeto para determinar si es igual a otro objeto de la misma clase.
En el ejemplo que mencionas, si el objeto se compara por nombre, el método hashCode podría devolver el valor hash del nombre del objeto. Y en el método equals, se compararía el nombre del objeto actual con el nombre del objeto pasado como parámetro.
Espero haber aclarado tus dudas. Si tienes alguna otra pregunta, no dudes en preguntar. ¡Espero haber ayudado y buenos estudios!