Non sei tu a essere poco chiaro, sono io che non "arrivo" a certi concetti.
Sul fatto che l'unica porta d'accesso a un private è il setColore() della classe stessa, non ho dubbi, né li avevo quando ho aperto questa discussione. Il problema (il MIO problema) è sorto nel cercare di fare override di setColore() per controllare nella sottoclasse la correttezza del valore di un campo che la sottoclasse può modificare tramite l'opportuno metodo setter.
Ora io credo di aver fatto come suggerisci, ma display() stampa qualunque codiceColore, ignorando lo switch di controllo.
Io avrei utilizzato un codiceColore in Camicia.java, assegnandoli il valore con this.codiceColore = codiceColore, e poi passato quel valore a super.setColore()... Ma quel campo l'abbiamo tolto, e comunque non funzionerebbe nemmeno così, anche se spontaneamente mi viene da ragionare così per risolvere la questione.codice:public void setColore(char codiceColore) { switch(codiceColore) { case 'B': case 'G': case 'R': case 'U': super.setColore(codiceColore); break; default: System.out.println("Codice colore errato!"); } }![]()



Rispondi quotando