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: