C# POO Básico
Classes e objetos
Em C#, uma classe é um molde que define dados (campos) e comportamentos (métodos). Um objeto é uma instância dessa classe, criada com o operador new. Cada objeto tem sua própria cópia dos campos de instância, mas compartilha os membros static da classe.
O construtor é um método especial que inicializa o objeto quando ele é criado. Ele tem o mesmo nome da classe e não tem tipo de retorno. A palavra-chave this refere-se ao objeto atual e é útil para diferenciar campos de parâmetros com nomes iguais.
Membros static pertencem à classe, não a um objeto específico. Eles são acessados pelo nome da classe (ex.: Contador.Total) e não podem usar this. Já os membros de instância precisam de um objeto para serem acessados.
Neste card, você vai praticar a criação de classes com campos, métodos, construtores e membros estáticos, entendendo a diferença entre eles.
Pontos-chave
- Uma classe define campos (dados) e métodos (comportamentos); um objeto é uma instância criada com
new. - O construtor inicializa o objeto e tem o mesmo nome da classe, sem tipo de retorno.
thisreferencia o objeto atual e ajuda a distinguir campos de parâmetros homônimos.- Membros
staticpertencem à classe e são acessados pelo nome da classe, não por uma instância. - Cada objeto tem sua própria cópia dos campos de instância; membros estáticos são compartilhados.
using System;
public class Contador
{
// Campo de instância: cada objeto tem o seu.
private int _valor;
// Campo estático: compartilhado por todas as instâncias.
private static int _totalObjetos;
// Construtor: inicializa o valor e incrementa o contador estático.
public Contador(int valorInicial)
{
_valor = valorInicial;
_totalObjetos++;
}
// Método de instância: usa this para se referir ao objeto atual.
public void Incrementar()
{
this._valor++;
}
// Propriedade somente leitura para acessar o valor.
public int Valor => _valor;
// Propriedade estática: acessada pela classe.
public static int TotalObjetos => _totalObjetos;
}
public class Program
{
public static void Main()
{
Contador c1 = new Contador(10);
Contador c2 = new Contador(20);
c1.Incrementar();
c1.Incrementar();
c2.Incrementar();
Console.WriteLine($"c1.Valor = {c1.Valor}"); // 12
Console.WriteLine($"c2.Valor = {c2.Valor}"); // 21
Console.WriteLine($"Total de objetos = {Contador.TotalObjetos}"); // 2
}
}