Modificateurs Java

Modificateurs
A présent, vous êtes assez familier avec le public
mot-clé qui apparaît dans presque tous nos exemples :
Le public
mot-clé est un modificateur d’accèsce qui signifie qu’il est utilisé pour définir le niveau d’accès aux classes, attributs, méthodes et constructeurs.
Nous divisons les modificateurs en deux groupes :
- Modificateurs d’accès – contrôle le niveau d’accès
- Modificateurs sans accès – ne contrôle pas le niveau d’accès, mais fournit d’autres fonctionnalités
Modificateurs d’accès
Pour Des classesvous pouvez utiliser soit public
ou défaut:
Modificateur | Description | Essayez-le |
---|---|---|
public |
La classe est accessible par n’importe quelle autre classe | Essayez-le » |
défaut | La classe n’est accessible que par les classes du même package. Ceci est utilisé lorsque vous ne spécifiez pas de modificateur. Vous en apprendrez plus sur les packages dans le chapitre Packages | Essayez-le » |
Pour attributs, méthodes et constructeursvous pouvez utiliser l’une des options suivantes :
Modificateur | Description | Essayez-le |
---|---|---|
public |
Le code est accessible pour toutes les classes | Essayez-le » |
private |
Le code n’est accessible qu’au sein de la classe déclarée | Essayez-le » |
défaut | Le code n’est accessible que dans le même package. Ceci est utilisé lorsque vous ne spécifiez pas de modificateur. Vous en apprendrez plus sur les packages dans le chapitre Packages | Essayez-le » |
protected |
Le code est accessible dans le même package et sous-classes. Vous en apprendrez plus sur les sous-classes et les super-classes dans le chapitre Héritage | Essayez-le » |
Modificateurs sans accès
Pour Des classesvous pouvez utiliser soit final
ou abstract
:
Modificateur | Description | Essayez-le |
---|---|---|
final |
La classe ne peut pas être héritée par d’autres classes (Vous en apprendrez plus sur l’héritage dans le chapitre Héritage) | Essayez-le » |
abstract |
La classe ne peut pas être utilisée pour créer des objets (Pour accéder à une classe abstraite, elle doit être héritée d’une autre classe. Vous en apprendrez plus sur l’héritage et l’abstraction dans les chapitres Héritage et Abstraction) | Essayez-le » |
Pour attributs et méthodesvous pouvez utiliser l’une des options suivantes :
Modificateur | Description |
---|---|
final |
Les attributs et les méthodes ne peuvent pas être remplacés/modifiés |
static |
Les attributs et les méthodes appartiennent à la classe, plutôt qu’à un objet |
abstract |
Ne peut être utilisé que dans une classe abstraite et ne peut être utilisé que sur des méthodes. La méthode n’a pas de corps, par exemple abstract void run();. Le corps est fourni par la sous-classe (héritée de). Vous en apprendrez plus sur l’héritage et l’abstraction dans les chapitres Héritage et Abstraction |
transient |
Les attributs et les méthodes sont ignorés lors de la sérialisation de l’objet qui les contient |
synchronized |
Les méthodes ne sont accessibles que par un thread à la fois |
volatile |
La valeur d’un attribut n’est pas mise en cache localement dans le thread et est toujours lue à partir de la « mémoire principale » |
Final
Si vous ne souhaitez pas pouvoir remplacer les valeurs d’attribut existantes, déclarez les attributs comme final
:
Exemple
public class Main {
final int x = 10;
final double PI = 3.14;
public static void main(String[] args) {
Main myObj = new Main();
myObj.x = 50; // will generate an error: cannot assign a value to a final variable
myObj.PI = 25; // will generate an error: cannot assign a value to a final variable
System.out.println(myObj.x);
}
}
Essayez-le vous-même »
Statique
UN static
signifie qu’il est possible d’y accéder sans créer d’objet de la classe, contrairement à public
:
Exemple
Un exemple pour montrer les différences entre static
et public
méthodes :
public class Main {
// Static method
static void myStaticMethod() {
System.out.println("Static methods can be called without creating objects");
}
// Public method
public void myPublicMethod() {
System.out.println("Public methods must be called by creating objects");
}
// Main method
public static void main(String[ ] args) {
myStaticMethod(); // Call the static method
// myPublicMethod(); This would output an error
Main myObj = new Main(); // Create an object of Main
myObj.myPublicMethod(); // Call the public method
}
}
Essayez-le vous-même »
Abstrait
Un abstract
méthode appartient à un abstract
classe, et il n’a pas de corps. Le corps est fourni par la sous-classe :
Exemple
// Code from filename: Main.java
// abstract class
abstract class Main {
public String fname = "John";
public int age = 24;
public abstract void study(); // abstract method
}
// Subclass (inherit from Main)
class Student extends Main {
public int graduationYear = 2018;
public void study() { // the body of the abstract method is provided here
System.out.println("Studying all day long");
}
}
// End code from filename: Main.java
// Code from filename: Second.java
class Second {
public static void main(String[] args) {
// create an object of the Student class (which inherits attributes and methods from Main)
Student myObj = new Student();
System.out.println("Name: " + myObj.fname);
System.out.println("Age: " + myObj.age);
System.out.println("Graduation Year: " + myObj.graduationYear);
myObj.study(); // call abstract method
}
}
Essayez-le vous-même »
#Modificateurs #Java