Sono parole chiave, non attributi

final
- se usato davanti ad una variabile indica una costante (l'analogo di const di c/c++)
- se usato su un metodo indica un metodo di cui non puoi fare l'override
- se usato su una classe indica una classe non derivabile

volatile si usa quando più thread utilizzano la stessa variabile e serve per evitare che i vari thread si creino (per ragioni di efficienza) delle copie locali della variabile stessa.