Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Как правильно модифицировать базовый конструткор?

#c_sharp #ооп #наследование


Мучаю наследование. Стакнулся на моменте использования конструктора базового класса
в производном.

Базовый класс:

namespace ConsoleApp12
{
    class Employee
    {
        public string Name { get; set; }
        public float Pay { get; set; }
        public int Age { get; set; }
        public Employee()
        {

        }
        public Employee(string name, int age, float pay)
        {
            Name = name;
            Age = age;
            Pay=pay;
        }

    }
}


Производный:

namespace ConsoleApp12
{
    class Manager : Employee
    {
        public int SalaryIndex { get; set; }
        public Manager(int salIndex) : base(name, age, pay)
        {

        }
    }
}


Получаю ошибку: 

Кто может объяснить что я делаю не так?
    


Ответы

Ответ 1



Вы вызываете конструктор базовогo класса, передавая туда в качестве параметров переменные, которых в этом месте нет. class Manager : Employee { public int SalaryIndex { get; set; } public Manager(int salIndex) : base() { SalaryIndex = salIndex; } public Manager(int salIndex, string name, int age, float pay) : base(name, age, pay) { SalaryIndex = salIndex; } }

Ответ 2



Если в потомке уже определены некоторые параметры базового класса (например, есть значения по умолчанию, либо значения вычисляются из других параметров), то, если эти свойства не приватные, их можно инициализировать в конструкторе потомка. class Manager : Employee { public int SalaryIndex { get; set; } public Manager(int salIndex) : base() { SalaryIndex = salIndex; Name = "Имя по умолчанию"; Age = 20; Pay = 1000 * Age; } }

Комментариев нет:

Отправить комментарий