При создании объекта класса
C#
Book3 book = new Book3();
Конструкторы будут вызываться:
1-ый конструктор вызовется у с самого базового класса . В нашем примере вызовется Book1()
2-ой конструктор вызовется у класса который наследуется от базового . В нашем примере вызовется Book2()
...
конструкторы будут вызываться вверх по наследованию . В нашем примере вызовется Book3()
C#
class Book1
{
// constructor
public Book1()
{
Console.WriteLine("Book1()");
}
}
class Book2 : Book1
{
public Book2()
{
Console.WriteLine("Book2()");
}
public Book2(string str)
{
Console.WriteLine("Book2({0})", str);
}
}
class Book3 : Book2
{
public Book3()
{
Console.WriteLine("Book3()");
}
}
class Program
{
static void Main(string[] args)
{
Book3 book = new Book3();
// на экране увидим
// Book1()
// Book2()
// Book3()
}
}
Чтобы вызвать конструктор из базового класса нужно написать:
C#
base(аргументы базового конструктора);
C#
class Book1
{
// constructor
public Book1()
{
Console.WriteLine("Book1()");
}
}
class Book2 : Book1
{
public Book2()
{
Console.WriteLine("Book2()");
}
public Book2(string str)
{
Console.WriteLine("Book2({0})", str);
}
}
class Book3 : Book2
{
public Book3() : base("aaa")
{
Console.WriteLine("Book3()");
}
}
class Program
{
static void Main(string[] args)
{
Book3 book = new Book3();
// на экране увидим
// Book1()
// Book2(aaa)
// Book3() }
}
1) 'base' может использоваться чтобы вызвать метод из базового класса
2) 'base' может использоваться когда переменная класса совпадает с переменной из базового класса
подробнее о base В C# ...