🎯 Objetivo: Aprender a usar construtores e entender a palavra-chave this para inicializar objetos de forma eficiente e segura.



⚒️ Classe x Instanciar Objeto

Cada objeto é uma instância de uma classe. Ao serem criados, possuem uma identificação única que é atribuída pelo ambiente, além de conter todos os atributos e métodos definidos em sua classe.

Declarando a variável de referência

	Funcionario f2;

A variável f2 é declarada do tipo Funcionario (etapa 1).

Alocando Memória

	f2 = new Funcionario();

Aloca área de memória para o novo objeto e atribui a f2 o endereço dessa área.

Declarando a variável e alocando memória ao mesmo tempo

Funcionario f2 = new Funcionario();

🧠 Representação na Memória

image.png


🛠 O que é um Construtor?

Um construtor é um método especial que é executado automaticamente no momento em que um objeto é criado (ou seja, quando você usa a palavra-chave new). O principal objetivo de um construtor é garantir que o objeto seja inicializado em um estado válido.

Características de um Construtor em C#:

Se você não definir nenhum construtor na sua classe, o C# criará um construtor padrão (também chamado de "construtor sem parâmetros") por trás dos panos. Se você criar um construtor com parâmetros, o C# não criará o construtor padrão, e você precisará criá-lo explicitamente se quiser usá-lo.

🧪 Exemplo com Construtor

Vamos usar a classe Aluno e adicionar um construtor para inicializar o nome e a idade no momento da criação.

public class Aluno
{
    public string nome;
    public int idade;

    // Construtor sem parâmetros (Construtor padrão)
    // Se você não criar outro, este é gerado automaticamente
    public Aluno()
    {
    }

    // Construtor com parâmetros
    public Aluno(string nome, int idade)
    {
        this.nome = nome;
        this.idade = idade;
    }

    public void Apresentar()
    {
        Console.WriteLine($"Olá! Meu nome é {nome} e tenho {idade} anos.");
    }
}

🧱 A palavra-chave this

A palavra-chave this é uma referência ao objeto atual. Ela é usada principalmente para diferenciar os atributos da classe dos parâmetros de um método ou construtor, especialmente quando eles têm o mesmo nome.

No exemplo do construtor acima: