Quero entender as vantages, quando utilizar ou nao.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Quero entender as vantages, quando utilizar ou nao.
Opa, Guilherme. Beleza?
É possível criar várias sobrecargas de construtores em uma classe, assim como podemos criar várias sobrecargas de métodos.
Podemos ter um método RealizarTransferencia com uma data de agendamento:
public void RealizarTransferencia(double valor, ContaCorrente destino, DateTime data)
{
...
}Mas, para realizar a tranferência imediatamente, o argumento data não importa, será a data atual. Então podemos criar a sobrecarga sem este argumento:
public void RealizarTransferencia(double valor, ContaCorrente destino)
{
...
}Como a lógica de transferência já foi escrita na sobrecarga mais genérica, com mais argumentos, o mais correto é chamar a sobrecarga mais completa a partir da simplificada:
public void RealizarTransferencia(double valor, ContaCorrente destino)
{
RealizarTransferencia(valor, destino, DateTime.Now);
}O mesmo conceito se aplica com construtores!Podemos ter um construtor com mais opções (ContaCorrente com número, agência e saldoInicial) e outro com menos(só o número e agência):
public ContaCorrente(int numero, int agencia)
{
Numero = numero;
Agencia = agencia;
}
public ContaCorrente(int numero, int agencia, double saldoInicial)
{
Numero = numero;
Agencia = agencia;
Depositar(saldoInicial);
}Perceba que estamos repetindo a lógica das atribuições! Não seria melhor centralizar isto em apenas um lugar? Então, assim como nas sobrecargas de métodos, o construtor com menos argumentos pode chamar o construtor mais completo:
public ContaCorrente(int numero, int agencia) : this(numero, agencia, 0)
{
// codigo executado após o construtor chamado com "this(numero, agencia, 0)"
}
public ContaCorrente(int numero, int agencia, double saldoInicial)
{
Numero = numero;
Agencia = agencia;
Depositar(saldoInicial);
}O que você acha? Resolvi sua dúvida?
Abs.
Resolveu sim, muito obrigado Guilherme.