C#
class Dog : Animal
{
...
}
Мы должны вызывать конструктор базового класса (для инициализации переменных базового класса).
C#
class Animal
{
protected int Year;
// конструктор
public Animal ()
{
Year = 3; // инициализация поля класса
}
}
class Dog : Animal
{
public string WhatSay;
// конструктор
public Dog() : base() // вызываем конструктор базового класса
{
WhatSay = "Гав гав"; // инициализация поля класса
}
}
Если мы не вызываем конструктор у базового класса, то конструктор без параметров
у базового класса будет вызван автоматически.
Конструктор без параметров вызывается автоматически у базового класса
Конструкторы с параметрами автоматически не вызывается.
Пример
C#
class My1
{
// конструктор по умолчанию
public My1()
{
Console.WriteLine("Hello! My1");
}
// конструктор с параметрами
public My1(string text)
{
Console.WriteLine("Hello my text: " + text);
}
}
class My2 : My1
{
// конструктор по умолчанию
public My2()
{
Console.WriteLine("Hello! My2");
}
}
class Program
{
static void Main(string[] args)
{
My2 item = new My2();
// был вызван конструктор My1()
// на экране увидим "Hello! My1"
// был вызван конструктор My2()
// на экране увидим "Hello! My2"
}
}
Если мы хотим вызвать конструктор базового класса, то мы должны использовать ключевое слово
base
Пример
C#
class My1
{
// конструктор по умолчанию
public My1()
{
Console.WriteLine("Hello! My1");
}
// конструктор с параметрами
public My1(string text)
{
Console.WriteLine("Hello my text! " + text);
}
}
class My2 : My1
{
// конструктор по умолчанию
public My2() : base("Good") // вызываем базовый конструктор
{
Console.WriteLine("Hello! My2");
}
}
class Program
{
static void Main(string[] args)
{
My2 item = new My2();
// на экране увидим
// Hello! My1
// Hello! My2
}
}