Construtores
Parte da seção Programação Orientada a Objetos do Journey de C# da Coddy — lição 7 de 70.
Um construtor é um método especial que é executado quando você cria um objeto. Ele inicializa as propriedades e campos do objeto.
Construtor padrão sem parâmetros
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
// Default constructor
public Book()
{
Title = "Unknown";
Author = "Unknown";
}
}Construtor parametrizado
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
// Construtor com parâmetros
public Book(string title, string author)
{
Title = title;
Author = author;
}
}Sobrecarga de construtores - múltiplos construtores
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public int Pages { get; set; }
// Construtor com dois parâmetros
public Book(string title, string author)
{
Title = title;
Author = author;
Pages = 0;
}
// Construtor com três parâmetros
public Book(string title, string author, int pages)
{
Title = title;
Author = author;
Pages = pages;
}
}Encadeamento de construtores com this
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public int Pages { get; set; }
// Construtor principal
public Book(string title, string author, int pages)
{
Title = title;
Author = author;
Pages = pages;
}
// Chama o construtor principal com páginas padrão
public Book(string title, string author) : this(title, author, 0)
{
}
}Criando objetos com diferentes construtores
Book book1 = new Book("1984", "George Orwell");
Book book2 = new Book("Harry Potter", "J.K. Rowling", 500);Construtores têm o mesmo nome que a classe e nenhum tipo de retorno. Eles são executados automaticamente quando você usa a palavra-chave new. Você pode ter múltiplos construtores com parâmetros diferentes (sobrecarga).
Desafio
MédioCrie três construtores para a classe Product usando sobrecarga e encadeamento de construtores:
- Um construtor com 3 parâmetros: name, price e stock
- Um construtor com 2 parâmetros: name e price (stock padrão é 0)
- Um construtor padrão sem parâmetros (name = "Unknown", price = 0, stock = 0)
Use encadeamento de construtores com this para evitar a duplicação de código.
Folha de consulta
Um construtor é um método especial que é executado quando você cria um objeto. Ele inicializa as propriedades do objeto.
Os construtores têm o mesmo nome da classe e não possuem tipo de retorno. Eles são executados automaticamente quando você usa a palavra-chave new.
Construtor padrão sem parâmetros:
public class Book
{
public string Title { get; set; }
public Book()
{
Title = "Unknown";
}
}Construtor parametrizado:
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public Book(string title, string author)
{
Title = title;
Author = author;
}
}Sobrecarga de construtor - múltiplos construtores com parâmetros diferentes:
public class Book
{
public string Title { get; set; }
public int Pages { get; set; }
public Book(string title)
{
Title = title;
Pages = 0;
}
public Book(string title, int pages)
{
Title = title;
Pages = pages;
}
}Encadeamento de construtores com this para evitar duplicação de código:
public class Book
{
public string Title { get; set; }
public int Pages { get; set; }
public Book(string title, int pages)
{
Title = title;
Pages = pages;
}
public Book(string title) : this(title, 0)
{
}
}Criando objetos com diferentes construtores:
Book book1 = new Book("1984", "George Orwell");
Book book2 = new Book("Harry Potter", "J.K. Rowling", 500);Experimente você mesmo
using System;
class Program
{
static void Main()
{
string name = Console.ReadLine();
decimal price = decimal.Parse(Console.ReadLine());
int stock = int.Parse(Console.ReadLine());
Product product1 = new Product(name, price, stock);
Product product2 = new Product();
Product product3 = new Product("Keyboard", 79.99m);
Console.WriteLine($"Product 1: {product1.Name} - ${product1.Price} (Stock: {product1.Stock})");
Console.WriteLine($"Product 2: {product2.Name} - ${product2.Price} (Stock: {product2.Stock})");
Console.WriteLine($"Product 3: {product3.Name} - ${product3.Price} (Stock: {product3.Stock})");
}
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Programação Orientada a Objetos
1Fundamentos de POO
Arquivos ExternosNamespaces e DiretivasIntrodução a Classes e ObjetosA Palavra-chave 'this'Métodos e ParâmetrosCampos vs PropriedadesConstrutoresInicializadores de ObjetosRecapitulação - Calculadora Simples4Herança
Sintaxe Básica de Herança (:)A Palavra-chave 'base'Palavras-chave Virtual e OverrideClasses SeladasA Classe Base 'object'Recapitulação - Hierarquia de Funcionários7Recursos Avançados
Sobrecarga de OperadoresIndexadores (this[])Sobrescrita de ToString()Métodos de ExtensãoRecapitulação - Lista Personalizada10Padrões de Projeto Parte 1
Introdução aos Padrões de ProjetoSingleton Thread-SafePadrão FactoryPadrão Observer (Eventos)Padrão Strategy2Propriedades e Membros Estáticos
Propriedades AutoimplementadasPropriedades de Apenas Leitura/EscritaCampos e Métodos EstáticosClasses EstáticasMembros com Corpo de Expressão5Polimorfismo e Interfaces
Polimorfismo: Compilação vs ExecuçãoInterface vs Classe AbstrataMúltiplas InterfacesInterfaces ExplícitasUpcasting e DowncastingRecapitulação - Calculadora de Formas8Conceitos Avançados de POO
Composição sobre HerançaGenerics (Classes e Métodos)Delegates e EventosAtributos e ReflectionIDisposable e a Instrução usingFundamentos de Injeção de Dependência11Padrões de Projeto Parte 2
Padrão CommandPadrão AdapterPadrão DecoratorPadrão Template MethodPadrão StatePadrão Composite3Arquitetura de Classes
Dados de Instância vs EstáticosPalavras-chave 'readonly' e 'const'Campos de SuporteRecapitulação - Gerenciador de Conta Bancária6Encapsulamento
Modificadores de AcessoPropriedades para EncapsulamentoImplementação de Ocultação de DadosPadrões de ImutabilidadeRecapitulação - Registros de Estudantes9Argumentos Variáveis
A Palavra-chave 'params'Parâmetros OpcionaisArgumentos NomeadosSobrecarga de Métodos