static void Main(string[] args) { Worker[] workers = new Worker[4]; // Массив объектов класса "Работник в общем" workers[0] = new Accountant("Иванов Иван Иванович", 20000); workers[1] = new MainAccountant("Петров Петр Петрович", 30000); workers[2] = new Workers("Сидорова Александра Игоревна", 40000); workers[3] = new Engineer("Матросова Анастасия Александровна", 50000); foreach (Worker MasRab in workers) { Console.WriteLine("Работник: {0}", MasRab.ToString()); } Accountant Acc1 = (Accountant)workers[0]; Acc1.ChangeSalary(workers[3], 55000); Console.WriteLine("---"); Console.WriteLine("Новая зарплата для 4-его работника: \n{0} ", workers[3].ToString()); MainAccountant MAcc1 = (MainAccountant)workers[1]; MAcc1.CalcSalary(workers); // проверка как работает переопределенный метод Equals() MainAccountant MAcc2 = null; // проверка, если объект сравнения = null MAcc1.Equals(MAcc2); // программа не падает при таких данных // проверка статического метода Equals(Object objA, Object objB) MainAccountant MAcc3 = MAcc1; if (Equals(MAcc1, MAcc3)) // программа не падает при таких данных { Console.WriteLine("---"); Console.WriteLine("Они равны! (2)"); Console.WriteLine("---"); } Workers Wor1 = (Workers)workers[2]; Wor1.PutData(40000, 45000, 270); Engineer Eng1 = (Engineer)workers[3]; Eng1.Production((Workers)workers[2]); Console.WriteLine("\nДля выхода нажмите любую клавишу."); Console.ReadKey(); }