Итак, ваш Director
является Employee
. И Employee
может быть создан только с 2 значениями - name
и salary
. Следовательно, поскольку ваш Director
является Employee
, это означает, что к нему применяется то же правило - у него есть для имени и зарплаты.
Исправление заключается в вызове base
конструктор на Director
- то есть вызов конструктора Employee
.
"Как мне это сделать?" Я слышал, вы спрашиваете. Ну, со специальным base
звонком:
public class Employee
{
public Employee(string n, float s)
{
Console.WriteLine("Hello Mr. {0}, Your Salary is {1}", n, s);
}
}
public class Director : Employee
{
public void Salary(string name, float salary)
: base(name, salary) // Make sure you include this line
{
Console.WriteLine("Your Salary is: " + s);
}
}
Но подождите, это еще не все!
Я также хотел бы высказать несколько предложений относительно вашего кода.
1) Пожалуйста, используйте более длинные имена переменных: name
и salary
намного чище, чем n
и s
.
2) Вы наследуете Bonus
от Director
. Наследование - это отношение is-a
. Таким образом, утверждение «Директор - это сотрудник» имеет полный смысл, а утверждение «Бонус - это директор» - нет (если вы не используете «Бонус» в очень необычном смысле). Если вы не можете сказать, что что-то - это что-то иначе наследование не является правильным подходом.