consider two classes like this class Name{ string name; public Name(String name){ this.name = name; } public boolean equals(Object obj){ if(! obj instanceof Name){ return false; } return name.equals(((Name)obj).name); } } class NameWithInitial extends Name{ char initial; public NameWithInitial(String name, char initial){ super(name); this.initial = initial; } public boolean equals(Object obj){ if(! obj instanceof NameWithInitial){ return false; } else{ return super.equals(obj) ...