Olá Matheus! Tudo bem?
No Java, quando um atributo ou método é declarado como protected, ele é acessível não apenas dentro da própria classe onde foi definido, mas também por qualquer classe que herde dessa classe, ou seja, pelas subclasses, mesmo que estejam em pacotes diferentes. Isso é uma das características do modificador de acesso protected.
Por exemplo, se você tem a seguinte classe base:
public class Animal {
protected String nome;
protected void fazerSom() {
System.out.println("Som de animal");
}
}
E uma subclasse que herda de Animal:
public class Cachorro extends Animal {
public void latir() {
System.out.println(nome + " está latindo");
fazerSom();
}
}
No exemplo acima, a subclasse Cachorro pode acessar o atributo nome e o método fazerSom() da superclasse Animal porque ambos são protected. Isso demonstra que membros protegidos são visíveis para subclasses, permitindo que elas utilizem e até modifiquem esses membros, se necessário.
Espero que essa explicação tenha ajudado a esclarecer sua dúvida sobre herança e o acesso a membros protegidos.
Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.