It is common to call super.equals() but you have to consider carefully each case, unfortunately.
Of course, every class implements equals(), because Object does. However, not every class overrides the default implementation of equals() with a value-based equality
test. The default implementation simply compares the object references for identity - do they point to the same object.
If an object does not provide a value-based equality test, it should generally be assumed that the class does not have a value that can validly be compared for equality.
If such a class is your superclass, and you know the class does not have a value at all (e.g. it's java.lang.Object), you can happily override equals() with your own value-based test, using only the data in your own class.
For superclasses that do have member data that could be considered to be a value, do not override the default identity test with a value-based test, but do provide public or protected access to their value, you can implement your own value test.
For the hopefully small minority of classes that do have member data that could be considered to be a value, do not override the default identity test with a value-based test, and do not provide access to their value, there is indeed a big problem. The solution, if indeed a valid solution exists, can only be considered on a case-by-case basis.
... and Ernest makes good points about the general dubiousness of overriding superclass's value-based equality test with your own. You have to decide carefully, on a case-by-case basis, if it's valid.
[ July 16, 2007: Message edited by: Peter Chase ]