Como já dito, no processo de herança somente o construtor sem parâmetros é herdado. O código de exemplo mostra o processo de uso dos construtores:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | using System; public class Base { public Base() { Console.WriteLine("Estou no construtor da classe base"); } } //declara a classe derivada herdando a classe base public class Derivada: Base { public Derivada() { Console.WriteLine("Estou no construtor da classe derivada"); } } public class MinhaClasse { static void Main() { // objeto da classe base executando o construtor Base minhaBase = new Base(); // objeto da classe derivada executando o construtor Derivada minhaDerivada = new Derivada(); } } |
Compile e veja a saída no console:
Note que o construtor sem parâmetros da classe base foi automaticamente herdado. O 1º texto se refere à criação do objeto “minhaBase” e os seguintes se referem à criação do objeto “minhaDerivada”. No momento da criação do objeto “minhaDerivada”, foram executados o construtor da classe base e o construtor da classe derivada. Se quisermos herdar os outros construtores, devemos criar um equivalente na classe derivada e evocar o construtor da classe base com a palavra chave “base” passando os parâmetros necessários. O código abaixo exemplifica a chamada de um construtor de classe base através da classe derivada:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | using System; public class Base { public Base() { Console.WriteLine("Estou no 1º construtor da classe base"); } public Base(int valor) { Console.WriteLine("Estou no 2º construtor da classe base"); } } public class Derivada: Base { // declara o construtor da classe derivada herdando o construtor da classe base public Derivada(): base() { Console.WriteLine("Estou no 1º construtor da classe derivada"); } // declara o construtor da classe derivada herdando o construtor da classe base. Como o construtor da classe base exige um parâmetro, este é passado no pelo lista de parâmetros do próprio contrutor public Derivada(int valor): base(valor) { Console.WriteLine("Estou no 2º construtor da classe derivada"); } } public class MinhaClasse { static void Main() { // objeto da classe base executando o 1º construtor Base minhaBase1 = new Base(); // objeto da classe base executando o 2º construtor Base minhaBase2 = new Base(1); // objeto da classe derivada executando o 1º construtor Derivada minhaDerivada1 = new Derivada(); // objeto da classe derivada executando o 2º construtor Derivada minhaDerivada2 = new Derivada(1); } } |
Compile e veja a saída no console:
As duas primeiras saídas se referem à criação do objeto “minhaBase1” e “minhaBase2”, as duas seguintes se referem à criação do objeto “minhaDerivada1”, e as duas últimas, ao objeto “minhaDerivada2”.

