Avatar ·

Diferença entre public, protected, package-private (default) e private em Java

Olá a todos! Comecei a estudar Java agora e não consigo entender os modificadores de acesso. Li a teoria, mas na prática fico confuso sobre quando usar `public` e quando usar `private`. Por exemplo, tenho este código: ```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); } } ``` Em outra classe no mesmo pacote, posso acessar `name`, `age` e `breed`, mas não `id`. E se eu criar uma subclasse em outro pacote, só posso usar `name` e `age`. Por que isso? E o que significa "package-private"? Quando usar cada modificador em projetos reais? Expliquem, por favor, em palavras simples com exemplos. Desde já, obrigado!