2
respostas

Modificador protected internal

Não entendi muito bem a finalidade de usarmos esse modificador, uma vez que no exemplo da atividade, não foi possível acessar o GetBonificacao() do Estagiário na Main(). Poderia me ajudar?

2 respostas

Oi, Roberta. Tudo bom?

  • internal: ele atua de forma muito semelhante ao public. A diferença é que funciona como public apenas dentro do próprio projeto. Projetos com referência a DLL desta biblioteca não possuem acesso a membros com internal.
  • protected: só pode ser acessado pela classe que define este membro e classes derivadas.
  • protected internal: funciona como o internal no projeto que possui um membro com este modificador, mas, em projetos externos, as classes que derivam do tipo com estes membros poderá acessar, assim como o protected.

Então, o Main não tem acesso ao GetBonificacao, mas, derivando de Funcionario em qualquer projeto você poderá acessar.

Isto é útil quando você quer criar uma classe com um comportamento que pode ser alterado/acessado por classes derivadas, em outros projetos (protected) e, ao mesmo tempo, precisa acessar os membros diretamente (como os public) somente a partir da sua biblioteca (como o internal) - porque você não quer expor isso diretamente para as pessoas que utilizam sua biblioteca.

O que você acha? Abs.

Muito legal a explicação, mas ainda restou uma dúvida, pois a chamada da GetBonificacao de Estagiario não pode ser chamada na Main né?