Основы объектно-ориентированного программирования на языке 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;