Modificadores de acesso em C#
Olá pessoal! Tudo bem? Como vamos ter aula de funções, queria compartilhar algo bem importante que estive estudando e que irá agregar na compreensão da aula de hoje.
As funções em C# (mais conhecidas como métodos nessa linguagem), tem uma sintaxe mais complexa do que aprendemos com JavaScript. Sua sintaxe mais "simples" compõe: modificadores de acesso, tipo de retorno, nome do método e parâmetros. O que queria comentar com vocês é sobre essa primeira parte da estrutura chamada de "Modificadores de acesso".
Na documentação da Microsoft os modificadores de acesso são definidos como:
"Palavras-chave usadas para especificar a acessibilidade declarada de um membro ou de um tipo".
Um membro nesse caso se refere, por exemplo, a um membro de uma classe (atributos e métodos) e tipos se referem, por exemplo, a uma classe ou um struct. Então percebe-se que os modificadores de acesso podem ser usados em várias partes de um programa no C#.
Dessa forma, um método (que está dentro de uma classe), pode conter os seguintes modificadores de acesso (de acordo com a documentação da Microsoft):
public: o acesso não é restrito.
protected: o acesso é limitado à classe que os contém ou aos tipos derivados da classe que os contém.
internal: o acesso é limitado ao assembly atual.
protected internal: o acesso é limitado ao assembly atual ou aos tipos derivados da classe que os contém.
private: o acesso é limitado ao tipo recipiente.
private protected: o acesso é limitado à classe que o contém ou a tipos derivados da classe que o contém no assembly atual.
Explicando de uma forma mais simples:
O public permite o uso do método em qualquer parte do programa além da sua classe em que foi implementada: classes derivadas e não derivadas do mesmo assembly e de assemblys diferentes (assembly seria um projeto/componente/biblioteca dentro de uma mesma solução).
Classes derivadas é sobre Herança em POO, basicamente são classes que derivam de uma superclasse/classe base, em que essas subclasses herdam as características e comportamentos de sua classe base(atributos/propriedades e métodos).
O private permite que o método seja utilizado apenas na classe em que foi criada.
O protected permite que o método seja utilizado: na classe de criação, nas classes derivadas do mesmo e de outro assembly.
o internal permite que o método seja utilizado: na classe de criação, nas classes derivadas e não derivadas do mesmo assembly.
o protected internal é literalmente uma junção dos dois, ou seja, eles não permitem que o método seja utilizado por uma classe não derivada de outro assembly.
E por último, o private protected, que permite a utilização do método na classe de criação e nas classes derivadas do mesmo assembly.
Espero que tenha ajudado de alguma forma na compreensão de vocês, qualquer dúvida ou sugestão fiquem a vontade para comentar, estamos aqui para aprendermos juntos! Bons estudos pessoal!
Referências:
BILLWAGNER. Modificadores de acesso – Referência de C# - C#. Disponível em: https://learn.microsoft.com/pt-br/dotnet/csharp/language-reference/keywords/access-modifiers. Acesso em: 12 jan. 2024.
Luiza Ferreira @luizaferreirafonsecaMuito bom, Gabriel! Esses modificadores são bem importantes pra gerenciarmos nosso projeto com segurança, né?
São importantes pra proteger detalhes do nosso código interno. E o protected, em especial, acho que é muito usado porque permite o acesso ao membro da própria classe e das derivadas, então ele é importante na hora das hierarquias de herança, para as classes herdadas conseguirem usar seus membros (mas somente elas e não qualquer outra classe por fora). Acho que nos nossos projetos futuros, ao utilizar C#, podemos ter bastante essa manipulação de classes herdadas.