Guarda che nel setColore di Camicia puoi fare tutti gli switch e test che vuoi sul parametro! Come dicevo prima (ma deduco che non sono stato troppo chiaro ...), l'unica cosa particolare è che quando hai verificato che il valore è appropriato ed accettabile, devi semplicemente invocare tu super.setColore(codiceColore); perché solo il setColore di Abbigliamento ha accesso al campo, essendo private.
Non c'entrano i cast. Si intende il fatto che se hai una variabile di tipo Abbigliamento e vuoi invocare polimorficamente setColore (senza cioè "sapere" a priori che oggetto realmente è), per un certo valore ti funziona oppure no a seconda della implementazione del setColore se impone restrizioni oppure no.
Principio di sostituzione di Liskov