Modificadores de acesso (especificadores) em C# com exemplos de programas

⚡ Resumo Inteligente

Em C#, os modificadores de acesso são palavras-chave que definem a visibilidade de uma classe, propriedade ou método, restringindo quais programas externos podem acessá-los. Os construtores inicializam automaticamente os valores dos campos sempre que um objeto da classe é criado.

  • 🔐 Privado: O modificador de acesso privado limita um membro à mesma classe, bloqueando o acesso de qualquer programa externo.
  • 🌐 Público: O modificador de acesso público expõe uma propriedade ou método a qualquer programa externo sem restrições.
  • 🛡️ Protegido: O modificador de acesso protegido compartilha membros apenas com classes herdadas da classe atual.
  • 📦 Interno: O modificador de acesso interno permite o acesso dentro do mesmo assembly, mas não a partir de um programa externo.
  • ???? Construtor: Um construtor compartilha o nome da classe, não recebe nenhum tipo de retorno e inicializa os campos quando um objeto é criado.
  • 🤖 Assistência de IA: O GitHub Copilot cria a estrutura básica de modificadores e construtores, enquanto o ML.NET mapeia as propriedades da classe para os recursos do modelo.

Modificadores de acesso (especificadores) em C#

O que é modificador de acesso (especificador) em C#?

Modificadores de acesso Os especificadores de acesso em C# são palavras-chave usadas para definir a visibilidade de uma propriedade ou método de uma classe. Eles são usados ​​quando você não quer que outros programas vejam as propriedades ou métodos de uma classe. Os modificadores de acesso restringem o acesso, impedindo que outros programas vejam as propriedades ou métodos de uma classe.

Existem 6 tipos de modificadores de acesso em C#:

  • Privado
  • Público
  • Protegido
  • Interno
  • Protegido Interno
  • Privado Protegido

Aprenderemos sobre os principais modificadores de acesso em C# com exemplos de programas conforme explicado abaixo.

Modificadores de acesso privado em C#

Quando o modificador de acesso privado é anexado a uma propriedade ou a um método, significa que esses membros não podem ser acessados ​​por nenhum programa externo.

Exemplo de modificador de acesso privado

Vamos dar um exemplo e ver o que acontece quando usamos o modificador de acesso privado.

Vamos modificar o código atual em nosso arquivo Tutorial.cs. No método SetTutorial, vamos alterar a palavra-chave pública para privada.

Modificadores de acesso privado

Agora vamos mudar para nosso arquivo Program.cs. Você notará que há uma linha vermelha ondulada no método SetTutorial.

Como declaramos o método SetTutorial como privado em nossa classe Tutorial, o Visual Studio detectou isso. Ele informou ao usuário, destacando-o, que agora este método não funcionará no arquivo Program.cs.

Modificador de acesso privado

Modificadores de acesso público C#

Quando o modificador de acesso público é anexado a uma propriedade ou a um método, significa que esses membros podem ser acessados ​​a partir de qualquer programa externo. Já vimos isso em nossos exemplos anteriores.

Exemplo de modificador de acesso público

Modificadores de acesso público C#

Como definimos nossos métodos como públicos na classe Tutorial, eles podem ser acessados ​​a partir do arquivo Program.cs.

Modificadores de acesso protegido em C#

Quando o modificador de acesso protegido é anexado a uma propriedade ou a um método, significa que esses membros podem ser acessados ​​apenas por classes herdadas do atual classe. Isso será explicado com mais detalhes na classe Herança.

Modificadores de acesso interno C#

Quando um modificador de acesso interno é anexado a uma propriedade ou a um método, esses membros podem ser acessados ​​apenas por um programa interno, mas não por um programa externo.

Construtor C#

C# Os construtores são usados ​​para inicializar os valores dos campos de classe quando seus objetos correspondentes são criados. Um construtor é um método que possui o mesmo nome da classe. Se um construtor for definido em uma classe, ele fornecerá o primeiro método que é chamado quando um objeto é criado. Suponha que tivéssemos uma classe chamada Employee. O método construtor também seria nomeado como Employee().

As seguintes coisas importantes precisam ser observadas sobre os métodos construtores

  1. O modificador de acesso padrão C# para o construtor precisa ser tornado público.
  2. Não deve haver nenhum tipo de retorno para o método construtor.

Exemplo de construtor C#

Vamos agora ver como podemos incorporar o usuário dos construtores em nosso código. Usaremos construtores para inicializar os campos TutorialID e TutorialName com alguns valores padrão quando o objeto for criado.

Passo 1) O primeiro passo é criar o construtor para nossa classe Tutorial. Nesta etapa, adicionamos o código abaixo ao arquivo Tutorial.cs.

Construtor C#

Code Explicação:-

  1. Primeiro adicionamos um novo método que tem o mesmo nome da classe. Por ter o mesmo nome da classe, C# trata isso como um método construtor. Então agora sempre que o método chamador criar um objeto desta classe, este método será chamado por padrão.
  2. No construtor Tutorial, estamos definindo o valor de TutorialID como 0 e TutorialName como “Default”. Assim sempre que um objeto for criado, esses campos sempre terão esses valores padrão.

Agora vamos mudar para nosso arquivo Program.cs e apenas remover a linha que chama o método SetTutorial. Isso ocorre porque queremos apenas ver como o construtor funciona.

Construtor C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  public int TutorialID; 
  public string TutorialName;
  
  public Tutorial()
  {
   TutorialID=0;
   TutorialName="Default";
  }
  public void SetTutorial(int pID,string pName) 
  {
   TutorialID=pID;
   TutorialName=pName;
  }
  public String GetTutorial()
  {
   return TutorialName;
  }
  
  static void Main(string[] args) 
  {
   Tutorial pTutor=new Tutorial();
    
   Console.WriteLine(pTutor.GetTutorial());
    
   Console.ReadKey(); 
  }
 }
}

Code Explicação:-

  1. O primeiro passo é criar um objeto para a classe Tutorial. Isso é feito através da palavra-chave 'novo'.
  2. Usamos o método GetTutorial da classe Tutorial para obter o TutorialName. Isso é então exibido no console por meio do método Console.WriteLine.

Se o código acima for inserido corretamente e o programa for executado, a seguinte saída será exibida.

Saída:

Construtor C#

Na saída, podemos ver que o construtor foi realmente chamado e que o valor do TutorialName foi definido como “Default”.

Observação: Aqui o valor “default” é obtido do construtor.

Perguntas Frequentes

Se nenhum modificador for especificado, os membros de classe e struct serão definidos como privados por padrão, e os tipos de nível superior como internos, permanecendo ocultos até que você amplie sua visibilidade.

O atributo `protected` expõe um membro à mesma classe e a qualquer classe derivada, mesmo em assemblies diferentes. O atributo `internal` expõe o membro apenas a tipos presentes no mesmo assembly.

O atributo `protected internal` permite o acesso a partir do mesmo assembly ou de qualquer classe derivada. O atributo `private protected` é mais restritivo, permitindo o acesso apenas a classes derivadas dentro do mesmo assembly.

C# suporta construtores padrão, parametrizados, de cópia, estáticos e privados. Eles inicializam os campos de um objeto, executam a configuração da classe uma única vez ou clonam os valores de outro objeto.

Um construtor estático não aceita modificadores nem parâmetros. Ele é executado uma única vez, antes da criação do primeiro objeto ou do carregamento de membros estáticos, inicializando os campos estáticos.

Sim. Uma classe pode definir vários construtores com listas de parâmetros diferentes. O compilador escolhe aquele que corresponde aos argumentos passados ​​para `new`.

Sim. O GitHub Copilot sugere modificadores, construtores e inicializadores de campos a partir do nome de uma classe ou de um comentário dentro do Visual Studio e VS Code. RevVeja cada nível de visibilidade sugerido.

O ML.NET mapeia as propriedades públicas de uma classe de dados C# para recursos e rótulos do modelo. Os métodos getters e setters públicos permitem que ele leia esses valores durante o treinamento.

Resuma esta postagem com: