DurataLa durata di una risorsa indica l'intervallo di tempo dal momento in cui è possibile al momento in cui non è possibile utilizzarla
 | una risorsa a livello di classe (globale) dura fino al termine del programma (della classe...) |
 | una risorsa a livello di metodo (locale) dura fino al termine del metodo |
 | una risorsa a livello di blocco dura finché il controllo non ritorna al livello gerarchicamente superiore |
 | un oggetto dura dal momento in cui viene creato fino al momento in cui si perde il riferimento a esso... |
VisibilitàUna risorsa è visibile in un punto del programma se da lì si può fare riferimento a essa (utilizzarla...). Regola sequenziale
 | a livello di metodo una risorsa è visibile solo dopo la sua dichiarazione |
 | mentre a livello di classe una risorsa è visibile da tutti i metodi (è globale) |
Regola gerarchica
 | una risorsa è visibile solo all'interno del metodo nel quale è dichiarata (è locale al metodo) |
 | una risorsa è visibile solo all'interno del blocco nel quale è dichiarata (è locale al blocco) |
Sovrapposizione
 | una risorsa a livello di metodo si sovrappone a una risorsa globale con lo stesso nome |
 | una risorsa a livello di blocco non può sovrapporsi a una risorsa locale |
 | due risorse possono avere lo stesso nome se locali a due metodi diversi (o a due blocchi dello stesso metodo ma non gerarchicamente dipendenti) |

ApprofondimentoGli attributi, i metodi e le classi possono essere dichiarati con diversi livelli di visibilità e con altre caratteristiche. Attributo
 | public - Accessibile da qualsiasi altra classe |
 | private - Accessibile solo dalla classe |
 | protected - Accessibile solo dalla stessa libreria e dalle sottoclassi della stessa classe |
 | ... - Accessibile solo dalla stessa libreria |
 | static - Esiste una sola copia, per la classe, condivisa da tutti gli oggetti |
 | final - Diventa una costante |
Metodo
 | public - Accessibile da qualsiasi altra classe |
 | private - Accessibile solo dalla classe |
 | procteted - Accessibile dai metodi della classe e delle sottoclassi |
 | ... - Accessibile solo dalla stessa libreria |
 | static - Viene richiamato senza creare un oggetto ma con il nome della classe (main è statico perché viene richiamato senza che esista già alcun oggetto) |
 | void - Non produce un valore di ritorno |
Classe
 | public - Accessibile da qualsiasi altra classe, anche fuori dalla libreria |
 | private - |
 | abstract - Non può essere istanziata perché incompleta, verrà completata dalle sottoclassi |
 | final - Non possono essere generate sottoclassi |
 | ... - Accessibile solo dalla stessa libreria |
Interfacce
 | i campi sono automaticamente public static final |
 | i metodi sono automaticamente public abstract |
Blocco
 | static - viene eseguito una sola volta |
|