I do not get what Oracle means by followings: It seems to me the first and second ones are the same, the hashcode of two equal objects should always be the same! And for the last one does that mean, lets say in the following code change the value of prime in other classes?
1) Whenever it is invoked on the same object more than once during an 
   execution of a Java application, the hashCode method must consistently return 
   the same integer, provided no information used in equals comparisons on 
   the object is modified. This integer need not remain consistent from 
   one execution of an application to another execution of the same application.
2) If two objects are equal according to the equals(Object) method, then calling 
   the hashCode method on each of the two objects must produce the same integer result.
3) It is not required that if two objects are unequal according to the 
   Object.equals(java.lang.Object) method, then calling the hashCode method 
   on each of the two objects must produce distinct integer results. However, 
   the programmer should be aware that producing distinct integer results for 
   unequal objects may improve the performance of hash tables. 
MyCode
public class Derived {
    private int myVar;
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + myVar;
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Derived other = (Derived) obj;
        if (myVar != other.myVar)
            return false;
        return true;
    }
}
 
     
    