O encapsulamento é um dos quatro conceitos fundamentais da orientação a objetos. Seu objetivo é tratar os dados (variáveis) e as operações sobre esses dados (métodos), de forma unitária. De acordo com esse princípio, as variáveis de uma classe ficam ocultas de outras classes, de forma que só possam ser acessadas pelos métodos públicos da classe em que se encontram. Entretanto, a maioria das linguagens de programação orientadas a objetos disponibilizam um mecanismo para que o encapsulamento possa ser atenuado sob certas condições. Por exemplo, as variáveis de instância de uma classe podem ser livremente acessadas pelos métodos de instância de todas as suas subclasses. Esse acesso é possível, caso essas variáveis sejam declaradas como
- A)protegidas
Correta, porque o modificador protegido permite acesso pela própria classe e por suas subclasses.
- B)estáticas
Errada, porque estática diz respeito a pertencer à classe e não resolve o tipo de acesso descrito.
- C)globais
Errada, porque variáveis globais não representam o mecanismo de acesso entre classe e subclasse mencionado.
- D)automáticas
Errada, porque automáticas se referem a armazenamento/tempo de vida de variáveis, não à visibilidade.
- E)virtuais
Errada, porque virtual está ligada a polimorfismo e sobrescrita, não a controle de acesso.
Gabarito: A
Encapsulamento é a ideia de esconder os detalhes internos de uma classe e expor só o que for necessário por meio de métodos. Pense nele como uma caixinha com acesso controlado: você não mexe direto no conteúdo sem passar pela porta certa. Isso evita bagunça, protege os dados e deixa o código mais fácil de manter. Na orientação a objetos, as variáveis de instância normalmente ficam privadas, mas algumas linguagens permitem um acesso intermediário, mais aberto para classes relacionadas. Quando o enunciado diz que os métodos de instância das subclasses podem acessar livremente as variáveis da classe-mãe, ele está descrevendo o uso de um modificador que dá acesso para a própria classe e suas herdeiras. Esse é exatamente o caso de atributos declarados como protegidos. Em Java, por exemplo, a visibilidade protected permite acesso na própria classe, no mesmo pacote e nas subclasses. Em outras linguagens, a ideia é semelhante: não é acesso geral, mas também não é totalmente fechado. É o famoso meio-termo do encapsulamento. Por isso, o gabarito A está correto. As variáveis precisam ser declaradas como protegidas para que possam ser acessadas pelos métodos de instância das subclasses, como o enunciado descreve.