Originariamente inviato da Alex'87
Attributi
private/protected SEMPRE, a meno che non siano delle costanti utilizzabili da altri
Metodi
private/protected i metodi interni, che non devono essere utilizzati direttamente
public per i metodi "operativi", quelli che chi usa la tua classe deve utilizzare
Ad esempio, pensa ad una classe che fornisce un metodo per il
quick sort. Per funzionare ha bisogno di (almeno) tre parametri: l'array da ordinare e due indici che indicano l'inizio e la fine della partizione in considerazione.
Potresti avere questo metodo:
codice:
public static void quicksort(int[] array, int start, int end) { ... }
Chi lo usa però deve dare troppe informazioni: lui ha l'array da ordinare, non si deve porre il problema di passare anche la partizione... Se passa dei valori sbagliati (negativi, superiori alla dimensione dell'array)?
In un caso così puoi sfruttare private per fare due versioni del metodo: una pubblica, "semplice", e una privata che fa il lavoro sporco. Esempio:
codice:
public class ArrayUtils {
private static void quicksort(int[] array, int start, int end) {
...
}
public static void quicksort(int[] array) {
quicksort(array, 0, array.length);
}
}
Il programmatore che userà la classe ArrayUtils vedrà solo il metodo pubblico, dell'altro non gliene importerà nulla, è come se per lui non esistesse.
Quello che farà sarà solo
codice:
int[] array = {21, 4, 12, 100, 43, ... ecc};
ArrayUtils.quicksort(array);
Fine, senza preoccuparsi di partizioni ecc.