Viji
@Viji
Associate DevOps Engineer

Зачем base в этом методе?

Есть такой код, с инета:

class Person
{
    int age = 1;
    public virtual int Age
    {
        get => age;
        set{ if(value > 0 && value < 110) age = value; }
    }
    public string Name { get; set; }
    public Person(string name)
    {
        Name = name;
    }
    public virtual void Print() => Console.WriteLine(Name);
}
class Employee : Person
{
    public override int Age
    {
        get => base.Age;
        set { if (value > 17 && value < 110) base.Age = value; }
    }
    public string Company { get; set; }
    public Employee(string name, string company)
        : base(name)
    {
        Company = company;
        base.Age = 18; // возраст для работников по умолчанию
    }
}

Зачем здесь base после двоеточия?

public Employee(string name, string company)   : base(name)
  • Вопрос задан
  • 72 просмотра
Решения вопроса 2
freeExec
@freeExec
Участник OpenStreetMap
Чтобы отработал конструктор базового класса, иначе не создать объект.
Ответ написан
Viji
@Viji Автор вопроса
Associate DevOps Engineer
короче все только частично ответили на вопрос...

ответ такой.

если конструктор родительского класса не содержит параметров, то он может не вызываться в конструкторе дочернего класса, в противном случае он должен вызываться с помощью base(parameters*)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы