I metodi setter (e getter) sono necessariamente pubblici.
L'unico accesso dall'esterno al programma da parte di chiunque è attraverso l'istanza di un oggetto Camicia (o di un'altra sottoclasse di Abbigliamento).
A tale proposito ho impostato un controllo a monte dei possibili valori che passo a un metodo setter. Lo stesso potrei fare per esempio per controllare che un prezzo immesso sia positivo, ma quello ha più senso nel costruttore della superclasse essendo un controllo coerente per tutti gli articoli (sottoclassi).
Magari mi è sfuggito qualcosa ma a me non pare che, nell'ambito di un'istanza di Camicia, sia possibile stampare un codiceColore non contemplato nello switch.