Класс может иметь много конструкторов.Если класс является подклассом другого класса, то каждый один из его конструкторов будет вызывать a конструктор своего базового класса.
Если вы ничего не делаете в конструкторе подкласса, то конструктор базового класса по умолчанию (без параметров) будет вызываться неявно перед выполнением кода конструктора подкласса.Если вам не нужно это поведение по умолчанию, вы можете выбрать, какой конструктор вызывать.
Если я возьму код @ Ivien и немного его разверну:
public class Human
{
public Human()
{
Console.WriteLine("I am human");
}
public Human(int i)
{
Console.WriteLine("I am human " + i);
}
}
public class Man : Human
{
public Man()
{
Console.WriteLine("I am man");
}
public Man(int i)
{
// The default base class constructor will be implicitly called here
Console.WriteLine("I am man " + i);
}
}
public class Woman : Human
{
public Woman()
{
Console.WriteLine("I am woman");
}
public Woman(int i) : base(i)
{
// I don't want the default base class constructor, so I force a call to the other constructor
Console.WriteLine("I am woman " + i);
}
}
Вы увидите то же самоевещь, которую @Ivien видел для своего кода, но вы увидите:
I am human 2
I am woman 2
Если вы сделаете что-то вроде: var w2 = new Woman(2);