Menu
Coddy logo textTech

Aperçu des niveaux d'accès

Fait partie de la section Programmation Orientée Objet du Journey Java de Coddy — leçon 10 sur 87.

Les modificateurs d'accès contrôlent d'où les champs et les méthodes peuvent être accédés. Java possède quatre niveaux de contrôle d'accès.

ModificateurMême classeMême packageSous-classePartout
privateOuiNonNonNon
default (aucun mot-clé)OuiOuiNonNon
protectedOuiOuiOuiNon
publicOuiOuiOuiOui
public class BankAccount {
    private double balance;      // Uniquement cette classe
    String accountType;          // Par défaut : même package uniquement
    protected String owner;      // Même package + sous-classes
    public String bankName;      // Accessible partout
}

private est le plus restrictif - utilisez-le pour les données internes qui ne devraient jamais être accédées directement. public est le plus ouvert - utilisez-le pour les méthodes que d'autres classes doivent appeler.

Lorsque vous ne spécifiez aucun modificateur, Java utilise l'accès default (également appelé package-private). Cela permet l'accès uniquement au sein du même package.

class Helper {           // Classe d'accès par défaut
    void assist() { }    // Méthode d'accès par défaut
}

Choisissez le niveau d'accès le plus restrictif qui permet toujours à votre code de fonctionner. Cela protège vos données et rend votre code plus facile à maintenir.

challenge icon

Défi

Facile

Construisons un système d'enregistrement Student qui démontre comment les modificateurs d'accès contrôlent la visibilité à travers différents fichiers.

Vous allez créer deux fichiers pour organiser votre code :

  • Student.java : Définissez une classe Student avec des champs utilisant différents niveaux d'accès :
    • Champ private : studentId (String) - uniquement accessible au sein de la classe Student
    • Champ par défaut (aucun modificateur) : grade (int) - accessible au sein du même package
    • Champ protected : name (String) - accessible dans le même package et les sous-classes
    • Champ public : school (String) - accessible partout
    Incluez un constructeur qui initialise les quatre champs, et une méthode public nommée getInfo() qui retourne une chaîne de caractères au format : "[studentId] name - Grade grade at school"
  • Main.java : Créez un objet Student et démontrez quels champs peuvent être accédés directement depuis l'extérieur de la classe. Affichez le champ school directement, puis affichez le résultat de getInfo() pour montrer toutes les informations de l'étudiant.

Vous recevrez quatre entrées : studentId, name, grade, et school (dans cet ordre).

Votre sortie doit comporter deux lignes : le nom de l'école accédé directement, suivi des informations complètes de l'étudiant provenant de la méthode getInfo().

Aide-mémoire

Les modificateurs d'accès contrôlent d'où les champs et les méthodes peuvent être consultés. Java dispose de quatre niveaux de contrôle d'accès :

ModificateurMême classeMême packageSous-classePartout
privateOuiNonNonNon
par défaut (aucun mot-clé)OuiOuiNonNon
protectedOuiOuiOuiNon
publicOuiOuiOuiOui
public class BankAccount {
    private double balance;      // Uniquement cette classe
    String accountType;          // Par défaut : même package uniquement
    protected String owner;      // Même package + sous-classes
    public String bankName;      // Accessible partout
}

private est le plus restrictif - utilisez-le pour les données internes qui ne devraient jamais être consultées directement. public est le plus ouvert - utilisez-le pour les méthodes que d'autres classes doivent appeler.

Lorsque vous ne spécifiez aucun modificateur, Java utilise l'accès par défaut (également appelé package-private), qui n'autorise l'accès qu'au sein du même package :

class Helper {           // Classe avec accès par défaut
    void assist() { }    // Méthode avec accès par défaut
}

Choisissez le niveau d'accès le plus restrictif qui permet tout de même à votre code de fonctionner. Cela protège vos données et rend votre code plus facile à maintenir.

Essayez vous-même

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Lire les entrées
        String studentId = scanner.nextLine();
        String name = scanner.nextLine();
        int grade = Integer.parseInt(scanner.nextLine());
        String school = scanner.nextLine();
        
        // TODO: Créer un objet Student avec les valeurs d'entrée
        
        
        // TODO: Imprimer le champ school directement (accessible car il est public)
        
        
        // TODO: Imprimer le résultat de getInfo() pour afficher toutes les informations de l'étudiant
        
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet