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 in 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 utilizzare questo metodo.
Quello che succede spesso è che voglio avere metodi utili in una superclasse, che tutte le sottoclassi possono usare. Ma non avrebbe senso che altre classi accedessero a questo metodo e, in un certo senso, rompesse 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 solo per essere usati dalle sottoclassi.
C'è una ragione per cui non esiste un modificatore di accesso subclasses-only
in Java? Mi sembra molto strano. Mi manca qualcosa?
Inoltre, un modificatore di accesso subclasses-only
sarebbe utile anche quando vuoi esporre le variabili solo a sottoclassi. Che a me succede molto.