Рисунок 2. Раннее и позднее связывание для метода Print() на примере трех классов A, B, C
Вызов метода Print() по ссылке на объект класса C
2. Что такое полиморфизм? Динамический полиморфизм
Полиморфизм – это свойство программного кода изменяться в зависимости от ситуации, которая возникает в момент выполнения программы.
Главный принцип полиморфизма – один интерфейс, много реализаций (методов). В терминах языка программирования, полиморфизм – это возможность с помощью ссылки на базовый класс обращаться к элементам (методов) экземпляров унаследованных классов единым унифицированным способом.
Использование преимуществ полиморфизма возможно в ситуациях:
когда классы образовывают иерархию с помощью концепции наследования;
когда в классах, которые образовывают иерархию, есть элементы (методы, свойства и т.п.) с одинаковой сигнатурой. В таких случаях возникает понятие «переопределение метода» (method override).
В языке программирования C# полиморфизм обеспечивается с помощью ключевых слов virtual и override. Благодаря использованию этих ключевых слов обеспечивается динамический полиморфизм. Термин «динамический» означает, что вызов виртуального элемента осуществляется динамично во время выполнения программы в зависимости от типа объекта, для которого этот элемент вызывается.
3. Для каких элементов класса можно применять полиморфизм?
Полиморфизм можно применять для следующих элементов:
методов;
свойств;
индексаторов;
событий.
4. Схематическое объяснение полиморфизма
На рисунке 3 демонстрируется применение полиморфизма на примере двух классов.
Рисунок 3. Реализация полиморфизма на примере двух классов A, B
5. Полиморфизм в случае передачи в метод ссылки на базовый класс. Позднее связывание
В любой метод может быть передана ссылка на базовый класс. С помощью этой ссылки также можно вызвать методы, свойства которые поддерживают полиморфизм.
Do'stlaringiz bilan baham: |