modifier
::=
"public"
| "private"
| "protected"
| "static"
| "final"
| "native"
| "synchronized"
| "abstract"
| "threadsafe"
| "transient"
This rule is called by-> class_declaration -> constructor_declaration -> interface_declaration -> method_declaration -> variable_declaration
Explicationspublicpublic sera visible par
toutes les autres méthodes, à l'intérieur ou à l'extérieur de l'objet.public
et on crée des méthodes spéciales pour les mettre à jour. Cela permet un
meilleur contrôle et un code plus sūr.
protectedprotected, seules les méthodes
présentes dans le même paquetage que
cette classe ou ses sous-classes pourront y accéder. On ne peut pas utiliser
le modificateur protected pour qualifier une classe.
private protectedprivate protected n'est visible que
dans sa classe ou dans ses sous-classes. Une classe ne peut pas être
private protected.
privateprivate
pourront la voir.
staticstatic est partagée entre toutes les
instances d'une même classe. On appelle une telle variable une
variable de classe.
static) est une méthode qui n'agit pas
sur des variables d'instance, mais uniquement sur des variables de classe.
On parle de méthode de classe.
finalfinal est ajouté à une classe, cela
signifie que la classe ne peut pas être sous-classée.final signifie que la variable est
constante. Attention, cela ne signifie pas que le compilateur empêche ou
contrôle les éventuelles modifications ! Remarquons également que l'on ne
peut pas déclarer de constante locale à une méthode.final
pourra etre optimisée par le compilateur, car elle ne sera pas sous-classée.
nativesynchronizedvolatilevolatile précise que la variable peut être changée par un
périphérique ou de manière asynchrone. Cela indique au compilateur qu'il ne
doit pas stocker les valeurs dans des registres. A chaque utilisation,
on lit la valeur, et on réécrit immédiatement le résultat s'il a changé.
abstractabstract indique que la classe auquel on
l'ajoute est une classe qui ne pourra pas etre instanciée telle quelle. De
plus, toutes les méthodes déclarées abstract dans
cette classe ne sont pas implémentées et devront être remplacées par des
méthodes complètes dans ses sous-classes.
transient