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 |
|