2015-08-11 11 views
6

Mi chiedevo se esistesse un modo più semplice per incrementare le variabili private di un'altra classe. Ecco come ho generalmente andrei su di esso:Un modo semplice per incrementare le variabili private?

Se Ho solo bisogno di fare questo raramente nel mio codice:

pc.setActionsCurrent(pc.getActionsCurrent()-1); 

Se ho bisogno di fare un sacco di incrementare, vorrei solo fare un setter speciale:

//In the PC class 
public void spendAction(){ 
    this.actionsCurrent--; 
} 

//In the incrementing Class 
pc.spendAction(); 

C'è un modo migliore per andare su questo? Se la variabile fosse pubblica

pc.actionsCurrent--; 

sarebbe sufficiente, e non posso fare a meno di sentire le complicazioni eccessive.

+1

Definire un getter/setter per quel campo privato. Questo è il modo standard per fare questo. –

+1

Incapsulamento. Le tue variabili private non dovrebbero essere cambiate da un altro oggetto. –

+1

Ovunque tu abbia detto di aumentare ma il tuo codice dice che stai diminuendo. – Jayesh

risposta

1

Basta definire un metodo di incremento. Per generalità è possibile fornire l'incremento come parametro e potrebbe essere negativo:

public void increment(int augend) 
{ 
    this.actionsCurrent += augend; 
} 
2

No. L'astrazione del metodo è generalmente la scelta giusta, è possibile anche passare il valore dell'incremento (e si può sfruttare quello nella propria implementazione). Considerare qualcosa come

private long increment = 1; 
private long myVariable = 0; 
public void setMyVariable(long myVariable) { 
    this.myVariable = myVariable; 
} 
public void setIncrement(long increment) { 
    this.increment = increment; 
} 
public long getMyVariable() { 
    return this.myVariable; 
} 
public void addToMyVariable(long val) { 
    this.myVariable += val; 
} 
public void incrementMyVariable() { 
    addToMyVariable(increment); 
} 

È possibile che questo consentirebbe al valore di incremento di variare (e questo è generalmente chiamato encapsulation).

+0

L'OP sta chiedendo un modo semplice. –

+1

@PiyushMittal Paga un programmatore? –

+0

Immagino che lo snippet che hai dato sia un po 'complesso. @Elliott –

Problemi correlati