Avatar ·

Différence entre public, protected, package-private (default) et private en Java

Bonjour à tous ! Je viens de commencer à apprendre Java et je n'arrive pas à comprendre les modificateurs d'accès. J'ai lu la théorie, mais en pratique, je confonds toujours quand écrire `public` ou `private`. Par exemple, j'ai ce code : ```java public class Animal { public String name = "Unknown"; protected int age = 5; String breed = "Mixed"; // package-private private String id = "A123"; public void showInfo() { System.out.println("Name: " + name); System.out.println("Age: " + age); System.out.println("Breed: " + breed); System.out.println("ID: " + id); } } ``` Dans une autre classe du même package, je peux accéder à `name`, `age` et `breed`, mais pas à `id`. Et si je crée une sous-classe dans un autre package, je ne peux utiliser que `name` et `age`. Pourquoi cela ? Et que signifie exactement "package-private" ? Quand utiliser quel modificateur dans des projets réels ? Expliquez-moi, s'il vous plaît, en termes simples avec des exemples. Merci d'avance !