Ereditarietà

di il
1 risposte

Ereditarietà

Ogni volta che viene modificato il valore nella classe padre
nella classe figlio devo far un metodo per ripristinare il valore iniziale in caso di modifica..
come si può fare?...
perché passando al metodo setToPreviousValue() un parametro int vecchio valore
comunque una volta aggiornato super.valore delle classe padre si modifica quest'ultimo...
come faccio a far in modo che rimanga tale?

//classe padre
public class Cell {
    int valore;
    
    public Cell(int valore) {
        this.valore = valore;
    }
    public int getValore() {
        return valore;
    }
    public void setValore(int valore) {
        this.valore = valore;
    }
    @Override
    public String toString () {
        return Integer.toString(valore);
    }
   
}
//classe figlio 

public class CellWithBackUP extends Cell {
     int variabile=0;

    public CellWithBackUP(int valore, int variabile) {
        super(valore);
        this.variabile = variabile;
    }
    //ERRORE METODO
    public int setToPreviousValue(int valore) {
        if(valore != super.valore) {
            return valore
        }
    }

1 Risposte

  • Re: Ereditarietà

    KernelPanic ha scritto:


    Ogni volta che viene modificato il valore nella classe padre
    nella classe figlio devo far un metodo per ripristinare il valore iniziale in caso di modifica..
    come si può fare?...
    Sinceramente non ho ben capito il senso/motivo.
    Vuoi che su un oggetto Cell si possa sempre poter cambiare quel valore mentre su un oggetto CellWithBackUP no (e resti sempre fisso il valore passato inizialmente al costruttore di CellWithBackUP) ??
    Già questo, detto così, comunque violerebbe il principio di sostituzione di Liskov, ovvero il fatto che, se è come detto, un oggetto CellWithBackUP non può più "comportarsi" ANCHE come tipo Cell.
Devi accedere o registrarti per scrivere nel forum
1 risposte