1
resposta

Duvida em criar um objeto com o mesmo nome da classe

Prezados, estou vendo esse curso só hoje, por conta de uma pequena necessidade no trabalho.

E eu fiquei com duvida na aula de construtores rsrsrs...

O professor criar o seguinte codigo abaixo.

public ContaCorrente(int agencia, int numero) { Agencia = agencia; Numero = numero; }

Esse nome "ContaCorrente" e o mesmo nome da classe, queria entender por que isso não gera um conflito, e outra eu nao poderia ja passar esses valores no inicio da construção da classe, como que quando eu instaciou isso no meu program, ele ja entende que precisso passar esses valores sendo que ele e um metodo dentro da classe?

1 resposta

Eai Rogério, Beleza?

Construtor é diferente de método.

Se você tentar criar um método com o mesmo nome da classe, o compilador iria acusar o conflito. Da mesma forma que se você tentar criar uma propriedade ou um atributo, ele não vai permitir!

Um construtor obrigatoriamente deve ter o mesmo nome da classe, NÃO POSSUI nenhum retorno e pode ter quantos parametros for necessario.

Visão geral dos construtores

public ContaCorrente() {  }

Um método obrigatoriamente você deve especificar o tipo de retorno, caso não exista, você define como void.

Visão geral dos metodos

public void MetodoContaCorrente() {  }

public int MetodoContaCorrente2() { return 0;  }

Respondendo sua dúvida

como que quando eu instaciou isso no meu program, ele ja entende que precisso passar esses valores sendo que ele e um metodo dentro da classe?

Isso porque voce definiu no construtor os parametros que são necessários para criar um novo objeto do tipo ContaCorrente, isso é uma regra, você não pode instanciar um objeto sem satisfazer o que foi definido em seu construtor.

Uma classe pode ter quantos construtores você quiser, mas se atente que sempre que um construtor é chamado, um novo objeto do tipo é criado!

Por exemplo:

Adicione um novo construtor sem parametros na sua classe ContaCorrente, deve ficar igual abaixo.

public ContaCorrente(int agencia, int numero) { Agencia = agencia; Numero = numero; }

public ContaCorrente() {  }

Agora sua classe possui dois construtores.

static void Main(string[] args)
{
        ContaCorrente conta = new ContaCorrente(12, 10);
        Console.WriteLine(conta.Agencia); // saida sera 12

        //Você chamando o construtor novamente para conta, você perde todas as referencias que foram criadas no codigo acima
        conta = new ContaCorrente();
        Console.WriteLine(conta.Agencia); // saida sera 0, pois é o valor default do tipo int
}

Espero ter ajudado