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 !