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
public
public
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.
protected
protected
, 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 protected
private protected
n'est visible que
dans sa classe ou dans ses sous-classes. Une classe ne peut pas être
private protected
.
private
private
pourront la voir.
static
static
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.
final
final
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.
native
synchronized
volatile
volatile
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é.
abstract
abstract
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