|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2010
Messaggi: 211
|
[JAVA] Chiarimento sul modificatore delle classi interne
Salve, ho alcune domane sul seguente codice
Codice:
class Test {
private static class Inner {
private static int n = 11;
}
public static void main(String[] args) {
System.out.print(Inner.n);
}
}
Come mai la classe esterna può accedere ad un membro privato della classe interna? Dichiarando la classe interna come private, a questo punto che importanza ha il modificatore di accesso di un suo membro? Cioè: se fosse stato "public static int n", cosa sarebbe cambiato? La classe interna non può essere accessibile dall'esterno della classe esterna (perché è "private static class Inner"), pertanto nemmeno un suo membro pubblico dovrebbe poter essere accessibile dall'esterno della classe esterna. O sbaglio? Ultima modifica di biowep : 18-04-2014 alle 21:20. |
|
|
|
|
|
#2 | ||
|
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Quote:
Qual'è il vantaggio di creare una nested class anziché una classe normale? Il fatto che la nested class ha senso all'interno del contesto della "classe esterna", pertanto è corretto che la classe esterna possa accedere a tutti i suoi membri. D'altro canto né la classe "padrona", se vogliamo usare un termine comune. Quote:
Nel caso in cui dichiari la classe interna come privata, presupponi che tale classe sarà usata solo all'interno della classe genitrice (l'unica in grado di istanziarla), quindi in effetti dichiarare i suoi membri pubblici o privati non fa differenza. E' comunque buona norma perché nel caso in cui decidessi di renderla pubblica non dovresti cambiare tutti i modificatori di accesso per rendere la classe compatibile con la sua nuova visibilità. |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:56.




















