Sobrecarga do construtor C#
Sobrecarga do construtor C#
Neste artigo, você aprenderá sobre sobrecarga de construtor em C# com a ajuda de exemplos.
Em C#, semelhante à sobrecarga de métodos, também podemos sobrecarregar construtores. Para sobrecarga de construtor, deve haver dois ou mais construtores com o mesmo nome, mas diferentes
- número de parâmetros
- tipos de parâmetros
- ordem dos parâmetros
Antes de aprender sobre a sobrecarga do construtor, certifique-se de conhecer os construtores C#.
Podemos executar a sobrecarga de construtor das seguintes maneiras:
1. Número diferente de parâmetros
Podemos sobrecarregar o construtor se o número de parâmetros em um construtor for diferente.
class Car {
Car() {
...
}
Car(string brand) {
...
}
Car(string brand, int price) {
...
}
}
Aqui, temos três construtores na classe Car . É possível ter mais de um construtor porque o número de parâmetros nos construtores é diferente.
Notar que,
Car() { }
- não tem parâmetroCar(string brand) { }
- tem um parâmetroCar(string brand, int price) { }
- tem dois parâmetros
Exemplo:Sobrecarga de construtor com número diferente de parâmetro
using System;
namespace ConstructorOverload {
class Car {
// constructor with no parameter
Car() {
Console.WriteLine("Car constructor");
}
// constructor with one parameter
Car(string brand) {
Console.WriteLine("Car constructor with one parameter");
Console.WriteLine("Brand: " + brand);
}
static void Main(string[] args) {
// call with no parameter
Car car = new Car();
Console.WriteLine();
// call with one parameter
Car car2 = new Car("Bugatti");
Console.ReadLine();
}
}
}
Saída
Car constructor Car constructor with one parameter Brand: Bugatti
No exemplo acima, sobrecarregamos o Car construtor:
- um construtor tem um parâmetro
- outro tem dois parâmetros
Com base no número do argumento passado durante a chamada do construtor, o construtor correspondente é chamado.
Aqui,
- Objeto carro - chama o construtor com um parâmetro
- Objeto car2 - chama o construtor com dois parâmetros
2. Diferentes tipos de parâmetros
class Car {
Car(string brand) {
...
}
Car(int price) {
...
}
}
Aqui, temos dois Carro construtores com o mesmo número de parâmetros. Podemos criar construtores com os mesmos parâmetros porque o tipo de dados dentro dos parâmetros é diferente.
Notar que,
Car(string brand) { }
- tem parâmetro destring
tipoCar(int price) { }
- tem parâmetro deint
tipo
Exemplo:sobrecarga de construtor com diferentes tipos de parâmetros
using System;
namespace ConstructorOverload {
class Car {
// constructor with string parameter
Car(string brand) {
Console.WriteLine("Brand: " + brand);
}
// constructor with int parameter
Car(int price) {
Console.WriteLine("Price: " + price);
}
static void Main(string[] args) {
// call constructor with string parameter
Car car = new Car("Lamborghini");
Console.WriteLine();
// call constructor with int parameter
Car car2 =new Car(50000);
Console.ReadLine();
}
}
}
Saída
Brand: Lamborghini Price: 50000
No programa acima, sobrecarregamos o construtor com diferentes tipos de parâmetros.
Aqui,
- Objeto carro - chama o construtor com
string
parâmetro de tipo - Objeto car2 - chama o construtor com
int
parâmetro de tipo
3. Ordem diferente de parâmetros
Car {
Car(string brand, int price) {
...
}
Car(int speed, string color) {
...
}
}
Aqui, temos dois construtores com o mesmo número de parâmetros. Isso é possível porque a ordem do tipo de dados nos parâmetros é diferente.
Notar que,
Car(string brand, int price) { }
-string
tipo de dados vem antes deint
Car(int speed, string color) { }
-int
tipo de dados vem antes destring
Exemplo:sobrecarga de construtor com ordem diferente de parâmetros
using System;
namespace ConstructorOverload {
class Car {
// constructor with string and int parameter
Car(string brand, int price) {
Console.WriteLine("Brand: " + brand);
Console.WriteLine("Price: " + price);
}
// constructor with int and string parameter
Car(int speed, string color) {
Console.WriteLine("Speed: " + speed + " km/hr");
Console.WriteLine("Color: " + color);
}
static void Main(string[] args) {
// call constructor with string and int parameter
Car car = new Car("Bugatti", 50000);
Console.WriteLine();
// call constructor with int and string parameter
Car car2 =new Car(60, "Red");
Console.ReadLine();
}
}
}
Saída
Brand: Bugatti Price: 50000 Speed: 60 km/hr Color: Red
No programa acima, sobrecarregamos os construtores com diferentes ordens de parâmetros.
Aqui,
- Objeto carro - chama o construtor com
string
eint
parâmetro respectivamente - Objeto car2 - chama o construtor com
int
estring
parâmetro respectivamente
Linguagem C