Dominando Sobrecarga de Construtores em C#
Dominando Sobrecarga de Construtores em C#
Descubra como projetar classes flexíveis em C# sobrecarregando construtores — variando contagem, tipos e ordem de parâmetros — com exemplos práticos.
A sobrecarga de construtores em C# espelha a sobrecarga de métodos: uma classe pode declarar múltiplos construtores que compartilham o mesmo nome, mas diferem na assinatura. O compilador seleciona o construtor apropriado com base nos argumentos fornecidos quando um objeto é instanciado.
- Diferente número de parâmetros
- Diferentes tipos de parâmetros
- Diferente ordem de parâmetros
Antes de mergulhar na sobrecarga, certifique-se de entender construtores básicos em C#.
1. Variando o Número de Parâmetros
Você pode sobrecarregar um construtor fornecendo diferentes números de argumentos.
class Carro { // Construtor sem parâmetros Carro() { ... } // Construtor com um parâmetro Carro(string marca) { ... } // Construtor com dois parâmetros Carro(string marca, int preco) { ... } }
Nesta classe Carro, os três construtores coexistem porque cada assinatura é distinta. O compilador escolhe o construtor correspondente em tempo de execução com base na contagem de argumentos.
Exemplo: Sobrecarga por Contagem de Parâmetros
using System; namespace SobrecargaConstrutor { class Carro { // Construtor sem parâmetros Carro() { Console.WriteLine("Construtor Carro"); } // Construtor com um parâmetro Carro(string marca) { Console.WriteLine("Construtor Carro com um parâmetro"); Console.WriteLine("Marca: " + marca); } static void Main(string[] args) { // Chama construtor sem parâmetros Carro carro = new Carro(); Console.WriteLine(); // Chama construtor com um parâmetro Carro carro2 = new Carro("Bugatti"); Console.ReadLine(); } } }
Saída
Construtor Carro Construtor Carro com um parâmetro Marca: Bugatti
O compilador invoca o construtor apropriado com base nos argumentos fornecidos.
2. Diferentes Tipos de Parâmetros
Construtores também podem ser sobrecarregados quando aceitam o mesmo número de parâmetros, mas de tipos diferentes.
class Carro { Carro(string marca) { ... } Carro(int preco) { ... } }
Aqui, ambos os construtores aceitam um único argumento, mas os tipos — string versus int — os diferenciam.
Exemplo: Sobrecarga por Tipo de Parâmetro
using System; namespace SobrecargaConstrutor { class Carro { // Construtor com string Carro(string marca) { Console.WriteLine("Marca: " + marca); } // Construtor com int Carro(int preco) { Console.WriteLine("Preço: " + preco); } static void Main(string[] args) { Carro carro = new Carro("Lamborghini"); Console.WriteLine(); Carro carro2 = new Carro(50000); Console.ReadLine(); } } }
Saída
Marca: Lamborghini Preço: 50000
3. Alterando a Ordem dos Parâmetros
Quando construtores têm o mesmo número e tipos de parâmetros, ainda é possível sobrecarregar reorganizando a ordem.
class Carro { Carro(string marca, int preco) { ... } Carro(int velocidade, string cor) { ... } }
As assinaturas diferem porque a sequência de tipos é distinta.
Exemplo: Sobrecarga por Ordem de Parâmetros
using System; namespace SobrecargaConstrutor { class Carro { // String primeiro, depois int Carro(string marca, int preco) { Console.WriteLine("Marca: " + marca); Console.WriteLine("Preço: " + preco); } // Int primeiro, depois string Carro(int velocidade, string cor) { Console.WriteLine("Velocidade: " + velocidade + " km/h"); Console.WriteLine("Cor: " + cor); } static void Main(string[] args) { Carro carro = new Carro("Bugatti", 50000); Console.WriteLine(); Carro carro2 = new Carro(60, "Vermelho"); Console.ReadLine(); } } }
Saída
Marca: Bugatti Preço: 50000 Velocidade: 60 km/h Cor: Vermelho
Linguagem C
- Construtores em C#: Tipos, Exemplos e Padrões Avançados
- Entendendo Classes Aninhadas em C#: Definição, Uso e Herança
- Dominando Sobrecarga de Métodos em C#: Conceitos, Exemplos e Boas Práticas
- Dominando Sobrecarga de Operadores em Python: Guia Prático
- Dominando Construtores em Java: Tipos, Uso e Exemplos Práticos
- Construtores de Enum em Java Explicados com Exemplo Prático
- Entendendo Líquido de Arrefecimento do Motor: Função, Tipos e Manutenção
- Sobrecarga de Operadores em C++: Guia Prático com Exemplos de Código
- Sobrecarga de Construtores em Java – Explicado com Exemplos Práticos de Código
- Entendendo Construtores Java: Inicialização e Boas Práticas