Il sorgente di un’applicazione consiste di uno o più file (”unità di compilazione”)
Ogni file contiene una o più dichiarazioni di classi (o di interfacce), di cui al più una dichiarata public
Il nome del file deve essere uguale a quello della sua classe public, con estensione .java
Il linking dinamico in Java avviene solo all'atto dell'esecuzione
Quando si esegue un programma, viene verificato che in memoria sia presente il file .class necessario all'esecuzione
A differenza del linking statico, i file .class possono essere riutilizzati facilmente, poiché non è necessario il linking
In Java è possibile posizionare la definizione di una classe all’interno di un’altra, realizzando quello che prende il nome di classe interna
Ciò consente di raggruppare classi che sono logicamente correlate e di controllare la loro visibilità
Ogni classe interna ha completa visibilità degli attributi e dei metodi della classe che la contiene
Un’istanza di una classe interna è ottenibile solo a partire da un’istanza della classe esterna
Possiamo disciplinare la visibilità della classe interna con le parole chiave public, private, protected