Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre construtores

Olá a todos! Assistindo a aula sobre Construtores em Herança, fiquei com a seguinte dúvida:

Porque o C# chama construtor da classe base toda vez que o construtor da classe derivada é chamado?

No exemplo dado em aula, quando é feito um new Diretor (classe derivada), por baixo dos panos o C# chama o construtor do Funcionário (classe base).

2 respostas
solução!

Eai Fabio, beleza?

Isso é necessário para que você tenha acesso a classe que esta sendo herdada. Se isso não acontecesse basicamente a sua classe Diretor não seria um Funcionário também.

Imagina que você instancia um novo Diretor que herda de Funcionario, dai você precisa acessar algum método/propriedade de Funcionario, se a classe Funcionario não tivesse sido instanciada isso não seria possível.

Então isso é regra, sempre que você instancia um novo objeto, sua herança será instanciada também para que ela seja acessível.

Perceba que se a sua classe Funcionario possuir construtor com parametros, obrigatoriamente sua classe Diretor deve satisfazer esse construtor.

public class Funcionario
{
public int IdFuncionario { get; set; }
public Funcionario(int idFuncionario)
{
IdFuncionario = idFuncionario;
}
}

Dessa forma o compilador já estaria acusando

public class Diretor : Funcionario
{

}

Chamando o construtor com os parametros necessarios para criar tambem um funcionario

public class Diretor : Funcionario
{
public Diretor(int idFuncionario) : base(idFuncionario) {}
}

Muito obrigado! Esclareceu completamente minha dúvida.