Страницы

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

пятница, 19 октября 2018 г.

Классы, наследование

Создал 2 класса. От одного наследовал другой. Вот код:
class Program { static void Main(string[] args) { Manager man = new Manager("", "", 0, 0); } }
class Employee { public string Surname { get; set; } public string Name { get; set; } public int Age { get; set; }
public Employee(string sName, string MyName, int MyAge) { Surname = sName; Name = MyName; Age = MyAge; } }
class Manager : Employee { public int Pay { get; set; }
public Manager(string s, string n, int a, int p) { Surname = s; Name = n; Age = a; Pay = p; } }
В унаследованном классе заполняю напрямую свойства из первого. Но почему то ругается на конструктор класса Manager.
Error CS7036 There is no argument given that corresponds to the required formal parameter 'sName' of 'Employee.Employee(string, string, int)'
Что то не пойму что не так?


Ответ

В классе Employee у вас нет конструктора без параметров, так что вы должны явно указать конструктор Employee, соответствующий конструктору Manager, и передать в него параметры. Создать объект класса Employee без вызова конструктора (и, соответственно, без передачи в него параметров) не получится:
public Manager(string s, string n, int a, int p) : base(s, n, a) // будет вызван Employee(string, string, int) { // все свойства, кроме Pay, инициалируются в конструкторе базового типа Pay = p; }

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

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