public virtual void iAmPrinting(Ispitanie test) { if (test is Test) { Console.WriteLine($"Тип: Test. Вызываю ToString()...\n" + test.ToString()); } if (test is Examination) { Console.WriteLine($"Тип: Examination. Вызываю ToString()...\n" + test.ToString()); } if (test is FinalExamination) { Console.WriteLine($"Тип: FinalExamination. Вызываю ToString()...\n" + test.ToString()); } }
static void Main() { Console.WriteLine("Вызываем метод Test() с разной реализацией для класса и интерфейса..."); Examination ex1 = new Examination("Физика", "8:00", "Что такое дилектрик?", "Это изолятор, пропускающий ток", "Что делает электродвигатель на 5 В при подключении 55 В??", "Сгорает к чертям"); ex1.Method(); (ex1 as ICheck).Method(); // или же ((ICheck)examination).Test(); Console.WriteLine("Создаем объекты различных классов и выводим инфу через ссылки на абстрактный класс / интерфейс."); Examination ex2 = new Examination("ОАиП", "8:00", "Самый страшный Звэр на свете?", "Бедодел.", "Кто такой Бедодел?", "Рейд-босс первашей."); FinalExamination fex1 = new FinalExamination("ОС", "8:30", "Что такое ОС?", "Набор прог", "Что такое ОЗУ?", "Оперативное запоминающее устройство", "Что такое ЦП?", "Центральный процессор", "Зачем он нужен?", "Он - \"мозг\" компа"); Console.WriteLine("Первый экзамен: " + ex2.Name); Console.WriteLine("Время второго: " + fex1.Time); Console.WriteLine($"\n Вызываем ToString() для объектов массива..."); // сделаем один тест, а то попусту класс создан string[] questions = { "Что такое парсек?", "Где находится Черная дыра?", "Газовые гиганты Солнечной системы?", "Созвездие в виде буквы W?", "Звезда, переливающаяся зеленым, желтым и синим цветами?" }; string[] answers = { "Единица измерения расстояния, равная расстоянию до объекта. :D ", "В центре галактики", "Юпитер, Сатурн, Уран, Нептун", "Кассиопея", "Капелла" }; Test test = new Test("Астрономия", "10:05", questions, answers); Ispitanie[] mas = new Ispitanie[4]; // заносим в массив ссылки на объекты производных классов mas[0] = ex1; mas[1] = ex2; mas[2] = fex1; mas[3] = test; // создаем "принтер" Printer p = new Printer(); for (int i = 0; i < mas.Length; i++) { p.iAmPrinting(mas[i]); } Console.WriteLine("\nDone."); Console.ReadKey(); }