Введение в теорию программирования. Объектно-ориентированный подход



             

Расширенные возможности полиморфизма в языке C#


Предыдущая лекция была посвящена базовым аспектам полиморфизма. Обсудим более тонкие механизмы, предусмотренные в языке C# для реализации сложных полиморфных объектов.

Проиллюстрируем особенности использования абстрактных свойств и методов следующим фрагментом программы на языке C#:

abstract class Sequence { public abstract void Add(object x); // метод public abstract string Name{ get; } // свойство public abstract object this [int i] { get; set; } // индексатор }

class List : Sequence { public override void Add(object x) { ... }

public override string Name { get { ... } } public override object this [int i] { get { ... } set{ ... } } }

Как видно из приведенного примера, фрагмент программы на языке C# представляет собой описание абстрактных классов Sequence и List, реализующих потоковое чтение и запись данных (get и set).

Заметим, что описание абстрактного класса Sequence реализовано явно посредством зарезервированного слова abstract.

Необходимо обратить внимание на то обстоятельство, что поскольку в производных классах требуется замещение методов, методы Add и Name класса List оснащены описателем override.

Еще одним средством реализации расширенного полиморфизма в языке программирования C# является механизм, известный под названием "запечатанных" (sealed) классов.

Под "запечатанными" классами мы будем понимать нерасширяемые классы, которые могут наследовать свойства других классов. Решение об использовании механизма "запечатывания" при описании приоритетных или, иначе, замещенных (override) методов принимается в индивидуальном порядке.

Рассмотрим соображения, обосновывающие использование механизма "запечатанных" классов в языке программирования C#. Прежде всего, благодаря реализации данного механизма предотвращается изменение семантики класса. Таким образом, существенно повышается безопасность разрабатываемого программного обеспечения. А за счет того, что вызов "запечатанных" методов предполагает использование статического связывания, значительно возрастает эффективность реализуемых приложений.




Содержание    Вперед