Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Construtores de Classe | Introdução à Programação Orientada a Objetos (POO)
C# Além do Básico

bookConstrutores de Classe

Um construtor de classe é o mesmo que um construtor de struct. Trata-se de um método executado quando um objeto é criado.

A sintaxe para criar um construtor é a seguinte:

index.cs

index.cs

copy
1234567
class className { // ... other class code public className() { // code } }

Por exemplo:

index.cs

index.cs

copy
1234567891011121314151617
using System; class Player { public Player() { Console.WriteLine("A new player is created"); } } public class HelloWorld { public static void Main(string[] args) { Player p1 = new Player(); Player p2 = new Player(); Player p3 = new Player(); } }

É possível observar na saída que a instrução Console.WriteLine dentro do construtor Player é executada toda vez que um novo objeto é criado.

Note
Nota

No C# 9 e em versões anteriores do C#, existem algumas diferenças entre os construtores de structs e classes. Por exemplo, em versões antigas, não é possível criar construtores sem parâmetros para Structs; entretanto, no C# 10 e versões mais recentes, isso é suportado. Recomenda-se utilizar a versão mais recente dos compiladores C# para evitar possíveis erros ao compilar parte do código.

A seguir está um exemplo de código do capítulo Construtores de Structs. O termo static é explicado nos comentários, pois é mais relevante aqui, porém não é necessário compreendê-lo completamente neste momento, já que esse conceito será detalhado em seções posteriores.

Note
Nota

Diferente dos campos normais, um campo static pode armazenar dados mesmo que não exista nenhum objeto daquela classe. Campos estáticos possuem o mesmo valor para todos os objetos, portanto, alterar o valor de um campo estático em um objeto altera para todos os objetos. A classe Program representa o próprio programa, portanto, se o campo estático for um membro da classe 'Program', ele atua como uma variável global.

index.cs

index.cs

copy
1234567891011121314151617181920212223
using System; struct Program { public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

Para converter a struct Player em uma classe, basta alterar o termo struct para class:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Program { // Unlike normal fields, a 'static' field can hold data even if there's no object. // Static fields have the same value for all objects. // Changing the value of a static field from one object changes it for all objects. // In this case the static field is part of the 'Program' class which represents the program itself // Therefore this field is essentially a global variable public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

Da mesma forma, também é possível ter construtores com alguns argumentos. Normalmente, esse método é utilizado para facilitar a inicialização dos campos da classe:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Point { public double x; public double y; public Point(double x, double y) { // 'this' keyword is also used in classes just like how its used in structs this.x = x; this.y = y; } public void showCoordinates() { Console.WriteLine($"({x}, {y})"); } } class Program { static void Main(string[] args) { Point p1 = new Point(50, 70); Point p2 = new Point(70, 90); p1.showCoordinates(); p2.showCoordinates(); } }

Neste ponto, você já abordou a maioria dos conceitos básicos de Classes, e, julgando pela sintaxe e comportamento, Classes parecem ser exatamente iguais a Structs, porém, isso não é verdade. Conforme mencionado no primeiro capítulo desta seção, Structs são uma versão limitada das Classes que fornecem apenas funcionalidades básicas, enquanto os recursos das Classes são muito mais complexos e amplos. Nesta seção, você viu todos os recursos que são semelhantes entre Classes e Structs. Nas próximas duas seções, você aprenderá todas as particularidades das classes e da programação orientada a objetos.

1. Quando um método construtor é chamado?

2. Qual será o nome de um método construtor em uma classe chamada "Animal"?

3. Qual palavra-chave é usada antes do nome de um construtor?

question mark

Quando um método construtor é chamado?

Select the correct answer

question mark

Qual será o nome de um método construtor em uma classe chamada "Animal"?

Select the correct answer

question mark

Qual palavra-chave é usada antes do nome de um construtor?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 9

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 2.04

bookConstrutores de Classe

Deslize para mostrar o menu

Um construtor de classe é o mesmo que um construtor de struct. Trata-se de um método executado quando um objeto é criado.

A sintaxe para criar um construtor é a seguinte:

index.cs

index.cs

copy
1234567
class className { // ... other class code public className() { // code } }

Por exemplo:

index.cs

index.cs

copy
1234567891011121314151617
using System; class Player { public Player() { Console.WriteLine("A new player is created"); } } public class HelloWorld { public static void Main(string[] args) { Player p1 = new Player(); Player p2 = new Player(); Player p3 = new Player(); } }

É possível observar na saída que a instrução Console.WriteLine dentro do construtor Player é executada toda vez que um novo objeto é criado.

Note
Nota

No C# 9 e em versões anteriores do C#, existem algumas diferenças entre os construtores de structs e classes. Por exemplo, em versões antigas, não é possível criar construtores sem parâmetros para Structs; entretanto, no C# 10 e versões mais recentes, isso é suportado. Recomenda-se utilizar a versão mais recente dos compiladores C# para evitar possíveis erros ao compilar parte do código.

A seguir está um exemplo de código do capítulo Construtores de Structs. O termo static é explicado nos comentários, pois é mais relevante aqui, porém não é necessário compreendê-lo completamente neste momento, já que esse conceito será detalhado em seções posteriores.

Note
Nota

Diferente dos campos normais, um campo static pode armazenar dados mesmo que não exista nenhum objeto daquela classe. Campos estáticos possuem o mesmo valor para todos os objetos, portanto, alterar o valor de um campo estático em um objeto altera para todos os objetos. A classe Program representa o próprio programa, portanto, se o campo estático for um membro da classe 'Program', ele atua como uma variável global.

index.cs

index.cs

copy
1234567891011121314151617181920212223
using System; struct Program { public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

Para converter a struct Player em uma classe, basta alterar o termo struct para class:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Program { // Unlike normal fields, a 'static' field can hold data even if there's no object. // Static fields have the same value for all objects. // Changing the value of a static field from one object changes it for all objects. // In this case the static field is part of the 'Program' class which represents the program itself // Therefore this field is essentially a global variable public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

Da mesma forma, também é possível ter construtores com alguns argumentos. Normalmente, esse método é utilizado para facilitar a inicialização dos campos da classe:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Point { public double x; public double y; public Point(double x, double y) { // 'this' keyword is also used in classes just like how its used in structs this.x = x; this.y = y; } public void showCoordinates() { Console.WriteLine($"({x}, {y})"); } } class Program { static void Main(string[] args) { Point p1 = new Point(50, 70); Point p2 = new Point(70, 90); p1.showCoordinates(); p2.showCoordinates(); } }

Neste ponto, você já abordou a maioria dos conceitos básicos de Classes, e, julgando pela sintaxe e comportamento, Classes parecem ser exatamente iguais a Structs, porém, isso não é verdade. Conforme mencionado no primeiro capítulo desta seção, Structs são uma versão limitada das Classes que fornecem apenas funcionalidades básicas, enquanto os recursos das Classes são muito mais complexos e amplos. Nesta seção, você viu todos os recursos que são semelhantes entre Classes e Structs. Nas próximas duas seções, você aprenderá todas as particularidades das classes e da programação orientada a objetos.

1. Quando um método construtor é chamado?

2. Qual será o nome de um método construtor em uma classe chamada "Animal"?

3. Qual palavra-chave é usada antes do nome de um construtor?

question mark

Quando um método construtor é chamado?

Select the correct answer

question mark

Qual será o nome de um método construtor em uma classe chamada "Animal"?

Select the correct answer

question mark

Qual palavra-chave é usada antes do nome de um construtor?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 9
some-alt