Quote Originariamente inviata da andbin Visualizza il messaggio
L'override di setColore lo DEVI fare perché altrimenti resta il setColore di Abbigliamento, che non ha vincoli e quindi chiunque può settarci quello che gli pare ...
Eppure ho verificato che, con il solo switch nel costruttore Camicia, eventuali valori non corretti di codiceColore vengono tutti convertiti nel segnale X... In pratica setColore() di Abbigliamento lo invoco esclusivamente dopo aver filtrato via i valori non accettabili per quell'oggetto di sottoclasse. Non vedo come altrimenti accedere a set Colore() di Abbigliamento...
Quote Originariamente inviata da andbin Visualizza il messaggio
Nel tuo ultimo costruttore di Camicia, il setColore viene invocato 1 volta sola, come flusso di esecuzione intendo, non due.
Ok. Ho fatto confusione nello scrivere... Intendevo dire che assegno due volte codiceColore al private di Abbigliamento, è questa sovrascrittura che non mi quadra, ma credo di aver risolto così:
codice:
        switch(codiceColore) {
            case 'B':
            case 'G':
            case 'R':
            case 'U':
                break;
            default:
                super.setColore('X');
        }
In sostanza passo ad Abbigliamento codiceColore e lo cambio solo se non è corretto col tipo Camicia.