Основы объектно-ориентированного программирования на языке C# book | Page 136

7 Класи Console.Writeline("Коло"); } } class Rectangle : Figure { public override void Draw() { // друк назви фiгури Прямокутник base.Draw(); Console.Writeline("Прямокутник"); } } class Triangle : Figure { public override void Draw() { // друк назви фiгури Трикутник base.Draw(); Console.Writeline("Трикутник"); } } Продемонструємо в програмi показано обидва аспекти полiморфi- зму. Створимо список екземплярiв класу Figure i занесемо в нього фiгури: Коло, Прямокутник, Трикутник . При заповненнi списку figures очiкується екземпляр класу Figure . Однак, ми передаємо в нього по- слiдовно екземпляри класiв Circle, Rectangle, Circle . При цьому вiдбувається неявне перетворення з типу похiдного класу в тип ба- зового класу. У даному фрагментi програми проявляється перший аспекту полiморфiзму. List
figures = new List
(); shapes.Add(new Rectangle()); shapes.Add(new Triangle()); shapes.Add(new Circle()); У наступному фрагментi ми демонструємо другий аспект, що пов’я- заний iз застосуванням у виклику перевизначеного методу похiдного класу: foreach (Figure s in shapes) { s.Draw(); } Console.Readkey(); } Для кожного екземпляру колекцiı̈ буде викликаний свiй метод за допомогою сигнатури базового. Остаточно програма прийме вигляд: using using using using using 136 System; System.Collections.Generic; System.Linq; System.Text; System.Threading.Tasks;