Introdução ao Construtor em C #

O construtor desempenha um papel muito importante na programação orientada a objetos. Vamos entender o papel do construtor em C # com a ajuda dos seguintes pontos:

  • Um construtor é um método especial presente dentro de uma classe que é responsável por inicializar as variáveis ​​da classe.
  • Seu nome é o mesmo que o nome da classe.
  • Ele é executado automaticamente quando criamos uma instância da classe.
  • Um construtor não retorna nenhum valor.
  • Se não definirmos um construtor, um construtor implícito será sempre fornecido pela classe que é chamada construtor padrão.

Sintaxe:

public class Student()
(
//constructor
public Student()
(
//code
)
)

Aqui, public Student () é um método que não possui nenhum tipo de retorno, nem mesmo é nulo, e seu nome é o mesmo que o nome da classe, ou seja, 'Student'. Portanto, esse método é o construtor dessa classe.

Quando criaremos um objeto desta classe usando:

Student obj = new Student();

Em seguida, o código dentro do construtor será executado.

Trabalho do Construtor em C #

1. O construtor inicializa os membros de dados para o novo objeto. Ele é chamado pelo operador 'novo' imediatamente após a memória ser alocada para o novo objeto.

2. Construtores explícitos (construtores definidos pelo usuário) podem ser sem parâmetros ou com parâmetros. Se for parametrizado, os valores passados ​​para o construtor podem ser atribuídos aos membros de dados da classe.

3. O construtor implícito inicializa variáveis ​​da classe com o mesmo valor, mesmo se criarmos várias instâncias dessa classe.

Exemplo:

Código:

using System;
public class ConstructorDemo
(
public int num = 10;
public static void Main()
(
ConstructorDemo obj1 = new ConstructorDemo();
ConstructorDemo obj2 = new ConstructorDemo();
ConstructorDemo obj3 = new ConstructorDemo();
Console.WriteLine("obj1.num = "+obj1.num+"\nobj2.num = "+obj2.num
+"\nobj3.num = "+obj3.num);
)
)

Resultado:

Representação pictórica do programa acima:

4. Construtor explícito com parâmetros nos permite inicializar variáveis ​​da classe com um valor diferente cada vez que criamos uma instância dessa classe.

Exemplo:

Código:

using System;
public class ConstructorDemo
(
public int num;
//explicit constructor
public ConstructorDemo(int num)
(
this.num = num;
)
public static void Main()
(
ConstructorDemo obj1 = new ConstructorDemo(10);
ConstructorDemo obj2 = new ConstructorDemo(20);
ConstructorDemo obj3 = new ConstructorDemo(30);
Console.WriteLine("obj1.num = "+obj1.num+"\nobj2.num = "+obj2.num
+"\nobj3.num = "+obj3.num);
)
)

Resultado:

Representação pictórica do programa acima:

Os 5 principais tipos de construtor em C #

O C # fornece cinco tipos de construtores. Eles são os seguintes:

1. Construtor Padrão

  • Um construtor sem nenhum parâmetro é chamado de Construtor Padrão. Se não o definirmos explicitamente, ele será fornecido implicitamente pelo compilador.
  • Nesse caso, podemos chamá-lo de construtor implícito. O construtor padrão ou implícito inicializa todos os membros de dados da classe com seus valores padrão, como todos os campos numéricos para zero e todos os campos de string e objeto como nulos.

Exemplo:

Código:

using System;
public class DefaultConstructor
(
public int num;
public string str;
)
public class Demo
(
public static void Main()
(
DefaultConstructor obj = new DefaultConstructor();
Console.WriteLine("obj.num = "+obj.num+"\nobj.str = "+obj.str);
)
)

Resultado:

2. Construtor parametrizado

O construtor com pelo menos um parâmetro é chamado de construtor parametrizado. Parâmetros para o construtor podem ser transmitidos ao criar a instância da classe. Isso nos permite inicializar cada instância de uma classe com valores diferentes.

Exemplo:

Código:

using System;
public class ParameterizedConstructor
(
public int num;
public string str;
//parameterized constructor
public ParameterizedConstructor(int num, string str)
(
this.num = num;
this.str = str;
)
)
public class Demo
(
public static void Main()
(
//passing values to constructor while creating instance
ParameterizedConstructor obj = new ParameterizedConstructor(50, "constructor");
Console.WriteLine("obj.num = "+obj.num+"\nobj.str = "+obj.str);
)
)

Resultado:

3. Construtor de Cópias

É um construtor parametrizado que aceita o mesmo objeto da classe que um parâmetro. Ele copia o valor do objeto existente (que é passado como parâmetro) para o objeto recém-criado instanciado pelo construtor. Podemos dizer que ele copia dados de um objeto para outro objeto.

Exemplo:

Código:

using System;
public class CopyConstructor
(
public int num;
public CopyConstructor(int num)
(
this.num = num;
)
//copy constructor
public CopyConstructor(CopyConstructor obj)
(
num = obj.num;
)
)
public class Demo
(
public static void Main()
(
CopyConstructor obj1 = new CopyConstructor(50);
//passing same class's object as parameter
CopyConstructor obj2 = new CopyConstructor(obj1);
Console.WriteLine("Original object:");
Console.WriteLine("obj1.num = "+obj1.num);
Console.WriteLine("\nCopied object:");
Console.WriteLine("obj2.num = "+obj2.num);
)
)

Resultado:

4. Construtor estático

  • Pode ser definido prefixando o nome do construtor com uma palavra-chave. É definido implicitamente pelo compilador (se não definido explicitamente) se a classe contiver alguma variável estática.
  • É o primeiro bloco a ser executado na classe e será chamado automaticamente. Ele será executado apenas uma vez, independentemente do número de instâncias de classe. É sem parâmetros e não aceita nenhum modificador de acesso.

Exemplo:

Código:

using System;
public class StaticConstructor
(
//static constructor
static StaticConstructor()
(
Console.WriteLine("Static constructor executed");
)
public static void Display()
(
Console.WriteLine("\nDisplay method executed");
)
)
public class Demo
(
public static void Main()
(
StaticConstructor.Display();
)
)

Resultado:

5. Construtor Privado

O construtor criado com o especificador privado é chamado de construtor privado. Não podemos criar uma instância da classe se ela contiver apenas construtor privado e não permitir que outras classes derivem dessa classe. Usado na classe que contém apenas membros estáticos.

Exemplo:

Código:

using System;
public class PrivateConstructor
(
public static int num = 100;
//private constructor
private PrivateConstructor()
(
)
)
public class Demo
(
public static void Main()
(
//PrivateConstructor obj = new PrivateConstructor(); //Error
Console.WriteLine("num = "+PrivateConstructor.num);
)
)

Resultado:

Conclusão

Se definirmos qualquer tipo de construtor na classe, não haverá nenhum construtor implícito na classe fornecida pelo compilador. Como métodos, construtores parametrizados também podem ser sobrecarregados com diferentes números de parâmetros. Os construtores definidos implicitamente pelo compilador são sempre públicos.

Artigo recomendado

Este é um guia para o Construtor em C #. Aqui discutimos os tipos de construtor em C # e seu trabalho junto com a implementação e saída de código. Você também pode consultar nossos outros artigos sugeridos para saber mais -

  1. Construtor em JavaScript e Tipos
  2. O que é o gerador de números aleatórios em c #?
  3. Construtor em C ++ e Tipos
  4. Copiar Construtor em C # (exemplos)
  5. Construtor estático em Java | Trabalhando | Formulários