Расчёт зарплаты сотрудников с полиморфизмом в C#
В этом уроке вы вычислите общую сумму зарплат разных типов сотрудников через абстрактный базовый класс.
Введение
У каждого типа сотрудников свой способ расчёта зарплаты: у сотрудника с окладом и у сотрудника с почасовой оплатой. Если определить абстрактный базовый класс с методом Pay(), код расчёта зарплаты сможет обращаться со всеми сотрудниками одинаково.
Класс Salaried возвращает оклад, а Hourly вычисляет зарплату, умножая почасовую ставку на число отработанных часов. Массив staff имеет общий тип Employee, но при вызове employee.Pay() программа автоматически выбирает нужный расчёт для каждого типа сотрудника. Сумма зарплат 1000 + 20 × 10 = 1200.
Пример на C#, который можно запустить
using System;
using System.Linq;
abstract class Employee { public abstract decimal Pay(); }
class Salaried(decimal salary) : Employee { public override decimal Pay() => salary; }
class Hourly(decimal rate, int hours) : Employee { public override decimal Pay() => rate * hours; }
class Program
{
static void Main()
{
Employee[] staff = { new Salaried(1000), new Hourly(20, 10) };
Console.WriteLine(staff.Sum(employee => employee.Pay()));
}
}
1200Практика с отладчиком
Попрактикуйтесь на задаче
Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.
Все задачи