Você está na página 1de 1

Encapsulamento: membros protegidos

Você deve ter notado no exemplo anterior que dentro da classe Física, as variáveis privadas da
classe Cliente não são visíveis. Se mudarmos estas variáveis para públicas, elas serão visíveis
nas classes derivadas, mas poderão ser vistas diretamente nas instancias, o que não é
recomendável.

A forma correta de se atribuir valores as classes são sempre através das propriedades (permite
validação dos dados), portanto, só nos resta utilizar a palavra-chave protected. Um membro
protegido é visível dentro da classe em que foi criada, nas classes derivadas, mas não é visível
nas instâncias da classe.

Criando um membro protegido


Basta alterar a variável status de privada para protegida:

E podemos mudar na classe Física:

Com a alteração da variável status de private para protected, o que ocorreu foi o seguinte: ela
agora fica visível para todas as classes que herdem a classe onde ela foi criada, nesse caso, a
classe Cliente. Como a classe Física também estende a classe Cliente, ela também pode
enxergar esta variável, conforme vimos no método incluir. Se ela continuasse como private,
ela não seria visível, pois a keyword private restringe a visibilidade do membro ao escopo do
local onde ele foi declarado (nesse caso, ela seria visível somente dentro da classe Cliente). Se
deixássemos a variável status como pública, ela ficaria acessível a qualquer classe que a
utilizasse, inclusive classes externas. Isso é bem ruim, pois assim outras classes poderiam
mudar a variável status para qualquer outro valor. Sendo assim, nós podemos utilizar a
keyword protected para restringir este acesso: classes externas não enxergam mais a variável
status, somente a própria classe Cliente e todas as que herdarem esta classe, como a classe
Física.

Você também pode gostar