Que fait égal (Object obj) faire?

Ive souvent trouvé une méthode equals dans des endroits différents. Que faut-il réellement faire? Est-il important que nous devons avoir cela dans chaque classe?

   public boolean equals(Object obj)
    {
    if (obj == this)
    {
        return true;
    }
    if (obj == null)
    {
        return false;
    }
    if (obj instanceof Contact)
    {
        Contact other = (Contact)obj;
        return other.getFirstName().equals(getFirstName()) &&
                other.getLastName().equals(getLastName()) &&
                other.getHomePhone().equals(getHomePhone()) &&
                other.getCellPhone().equals(getCellPhone());

    }
    else
    {
        return false;
    }
}

source d'informationauteur Best