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 l'accès aux champs et aux méthodes. Java dispose de quatre niveaux de contrôle d'accès.
| Modificateur | Même classe | Même package | Sous-classe | Partout |
|---|---|---|---|---|
private | Oui | Non | Non | Non |
| default (aucun mot-clé) | Oui | Oui | Non | Non |
protected | Oui | Oui | Oui | Non |
public | Oui | Oui | Oui | Oui |
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 par défaut (également appelé accès au niveau du package). Cela autorise 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.
Défi
FacileConstruisons un système d'enregistrement Student qui montre comment les modificateurs d'accès contrôlent la visibilité entre 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) - accessible uniquement à l'intérieur 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 dans les sous-classes - champ
public:school(String) - accessible partout
publicappeléegetInfo()qui renvoie une chaîne au format suivant :"[studentId] name - Grade grade at school"- champ
Main.java: créez un objet Student et montrez quels champs peuvent être consultés directement depuis l'extérieur de la classe. Affichez directement le champschool, puis affichez le résultat degetInfo()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 consulté directement, suivi des informations complètes de l'étudiant provenant de la méthode getInfo().
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: Afficher le champ school directement (accessible car il est public)
// TODO: Afficher le résultat de getInfo() pour montrer toutes les informations de l'étudiant
}
}
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
1Fondamentaux de la POO
Fichiers externesIntroduction à la POOClasses vs ObjetsLe mot-clé thisMéthodesChamps (Attributs)Méthode constructeurSurcharge de constructeurRécapitulatif - Calculatrice simple4Héritage
Héritage de base (extends)Le mot-clé superRedéfinition de méthode (@Override)Chaînage de constructeursLa classe ObjectHéritage simple et multiniveauPourquoi pas d'héritage multiple de classesRécapitulatif - Hiérarchie des employés7Méthodes spéciales et classe Object
Méthode toString()equals() et hashCode()Méthode clone()compareTo() et ComparableInterface ComparatorRécapitulatif - Tri personnalisé2Modificateurs d'accès et Encapsulation
Aperçu des niveaux d'accèsMéthodes Getter et SetterMasquage d'informationsLe mot-clé finalRécapitulatif - Gestionnaire de compte bancaire5Polymorphisme
Bases de la surcharge de méthodesRedéfinition de méthodes (Run-Time)Upcasting et DowncastingL'opérateur instanceofClasses et méthodes abstraitesRécapitulatif - Calculateur de formes8Concepts avancés de la POO
Composition vs HéritageAgrégation vs CompositionClasses internes, imbriquées et anonymesEnums et méthodes d'EnumRecords (Java 16+)Classes scellées (Java 17+)11Patrons de conception, partie 1
Introduction aux patrons de conceptionPatron SingletonPatron FabriquePatron MonteurPatron ObservateurPatron Stratégie3Propriétés de classe et membres statiques
Variables d'instance vs variables statiquesMéthodes statiquesBlocs statiquesConstantes (static final)Récapitulatif - Compteur et utilitaire6Interfaces et Classes Abstraites
Introduction aux InterfacesImplémentation d'InterfacesImplémentation d'Interfaces MultiplesDefault et Static dans les InterfacesClasses Abstraites vs InterfacesInterfaces FonctionnellesRécapitulatif - Système de Paiement9La généricité
Introduction à la généricitéClasses génériquesMéthodes génériquesParamètres de type bornésWildcards (?, extends, super)Récapitulatif - Conteneur générique12Patrons de conception, partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Template MethodPatron ÉtatPatron CompositePatron ItérateurEntraînez-vous par vous-même : Compilateur Java en ligne