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

7.10 Iнтерфейси double r = 2.7; public void Draw() // неявна реалiзацiя iнтерфейсу { Console.WriteLine("Circle, r={0}", r); } public void Perimeter() // неявна реалiзацiя iнтерфейсу { Console.WriteLine("L= {0}", 2 * 3.14 * r); } public void Area() // неявна реалiзацiя iнтерфейсу { Console.WriteLine("S={0}", 3.14 * r * r); } } class Program { static void Main(string[] args) { List figures = new List(); figures.Add(new Rectangle()); figures.Add(new Circle()); foreach (Ifigure f in figures) { f.Draw(); f.Perimeter(); f.Area(); } Console.ReadKey(); } } } Якщо ми прагнемо вказати, що реалiзуємо якийсь метод саме з кон- кретного iнтерфейсу (наприклад, при збiгу iмен), то слiд указати iм’я цього iнтерфейсу: void Ifigure.Draw() Це так звана явна реалiзацiя iнтерфейсу. У такому випадку рiвень доступу не вказується i ця яв- на реалiзацiя завжди є закритою (точнiше private virtual sealed ). Щоб отримати доступ до реалiзацiı̈ необхiдно зробити так: Rectangle a = new Rectangle(); ((Ifigure)a).Draw(); Тут ми створили екземпляр a класу Rectangle i привели його тип до типу Ifigure . У випадку неявноı̈ реалiзацiı̈ для виклику методу рисування для екземпляра a досить просто написати: a.Draw(); як i показано в нашому прикладi. Але ми можемо звертатись до методу iнтерфейсу створивши екзем- пляр типу цього iнтерфейсу i записати в неı̈ таке посилання : Rectangle a = new Rectangle(); Ifigure PointerDraw = (Ifigure)a; 157