In Java, ci sono quattro modificatori di accesso disponibili per i metodi:
public
- qualsiasi classe può utilizzare questo metodo.
protected
- le classi nello stesso pacchetto e le sottoclassi di qualsiasi pacchetto possono utilizzare questo metodo.
private
- solo questa classe può utilizzare questo metodo.
no modifier
("pacchetto privato") - solo le classi nello stesso pacchetto possono usare questo metodo.
Quello che succede spesso è che voglio avere metodi utili in una superclasse, che tutte le sottoclassi possano usare. Ma non avrebbe senso per le altre classi accedere a questo metodo, e in un certo senso spezzerebbe l'incapsulamento.
Quindi devo dichiarare questi metodi utili nella superclasse public
o protected
, che li espone a tutte le altre classi almeno nel pacchetto. Anche se sono pensati per essere utilizzati solo dalle sottoclassi.
C'è un motivo per cui non esiste un subclasses-only
modificatore di accesso in Java? Mi sembra molto strano. Mi sto perdendo qualcosa?
Inoltre, un subclasses-only
modificatore di accesso sarebbe utile anche quando si desidera esporre le variabili solo alle sottoclassi. Il che per me succede molto.