Do I need to use super.hashcode() to calculate this.hashcode()?
IDE (IntelliJ Idea for example) can generate equals and hashcode. It can use java.util.Objects. It can also override super.hashcode().
//Immutable class to put it into a hash set.
class Person {
    private final String name;
    // Constructor of not null, getter
    @Override
    public boolean equals(final Object o) {
        if (this == o) return true;
        if (!(o instanceof Person)) return false;
        final Person that = (Person) o;
        return Objects.equals(name, that.name);
    }
    // Auto generated by idea.
    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), name);
    }
    @Override
    public String toString() {
        return name;
    }
}
Now let's have two instances with the same name. Their hascodes will be different.
public static void main(String[] args) {
    Person person1 = new Person("John");
    Person person2 = new Person("John");
    System.out.println("People are equal: " + person1.equals(person2));
    System.out.println("Person 1: " + person1 + ", Hash code: " + person1.hashCode());
    System.out.println("Person 2: " + person2 + ", Hash code: " + person2.hashCode());
    Set<Person> people = new HashSet<>();
    people.add(person1);
    people.add(person2);
    System.out.println("People: " + people);
}
It prints different hashcodes.
People are equal: true
Person 1: John, Hash code: -1231047653
Person 2: John, Hash code: -1127452445
People: [John, John]
 
     
    