Ragazzi io ho una classe operaio (classe Op) in cui ho i seguenti attributi:
nome (String) e salario (short), mentre un operaio specializzato
(classe OpSp, sottoclasse di Op), in aggiunta possiede una specializzazione (riferimento ad un oggetto di tipo Specialty).

Devo implementare(usando equals) questo criterio di uguaglianza:
Due operai semplici sono uguali se hanno lo stesso nome. Due operai specializzati, in più, devono avere anche la stessa specializzazione (nel senso di ==). Un operaio semplice non è mai uguale ad un operaio specializzato.

Io avevo pensato di mettere sicuramente in Op equals in questo modo:

codice:
public class Op {
   String nome;
   short salario;

   public Op {...}

   public boolean equals(Object o) {
     if (!(o instanceof Op) return false;
     Op operaio = (Op)o;
     
     return nome.equals(operaio.nome);
   }
}

public class OpSp extends Op {
 // qui come ridefinisco equals ?
}
poichè nome è di tipo String, facendo nome.equals(operaio.nome), richiama equals di String confrontanto se i nomi sono uguali, giusto?

Come potrei fare riguardo la specializzazione, salvo restando che ho fatto bene per la classe Op.