Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

full sharp / 13Полиморфизм в C

.pptx
Скачиваний:
12
Добавлен:
08.03.2015
Размер:
41.88 Кб
Скачать

Полиморфизм в C#

"наличие многих форм". Это понятие имеет два различающихся аспекта.

Во время выполнения объекты производного класса могут рассматриваться как объекты базового класса в таких местах как параметры метода и коллекции массивов. При этом объявленный тип объекта больше не идентичен его типу времени выполнения.

Базовые классы могут определять и реализовывать виртуальные методы, а производные классы могут переопределять их. Это означает, что они предоставляют свои собственные определение и реализацию. Во время выполнения, когда клиентский код вызывает метод, среда CLR ищет тип времени выполнения объекта и вызывает это переопределение виртуального метода. Таким образом, в исходном коде можно вызвать метод в базовом классе и вызвать выполнение метода с версией производного класса.

Виртуальные методы позволяют единым образом работать с группами

связанных объектов. Например, предположим, имеется приложение рисования, которое дает возможность пользователю создавать на поверхности рисования различные формы. Во время компиляции

неизвестно, какие конкретные формы будет создавать пользователь. Но приложение должно учитывать все различные типы создаваемых форм, и оно должно обновлять их в ответ на действия мыши пользователя.

Полиморфизм можно использовать для решения этой проблемы в двух

основных этапах.

Создание иерархии классов, в которой класс каждой конкретной формы производится от общего базового класса.

Использование виртуального метода для вызова соответствующего метода в каком-либо производном классе одним вызовом метода

базового класса.

Если производный класс наследует от базового класса, то он приобретает все методы, поля, свойства и события базового класса. Проектировщик производного класса может выбирать из следующих возможностей:

переопределить виртуальные члены в базовом классе,

наследовать самый близкий метод базового класса без его переопределения,

определить новую не виртуальную реализацию этих членов, которая скрывает реализации базового класса.

Производный класс может переопределить член базового класса, если только член базового класса объявлен как виртуальный или абстрактный. Производный член должен использовать ключевое слово override, чтобы явно указать, что метод должен участвовать в виртуальном вызове.

ххх:объясни мне пожалуйста доступным языком полиморфизм

ууу:короч смотри

ууу:у тебя есть класс коржик, от которого наследуются классы

пирожено и морожено

ууу:у коржика есть метод схавать

ууу:но в пирожене он имплементируется как пожевать с чаем, а в

морожене - полызькать

ууу:и вот у тебя пакет для коржиков. И ты туда наложила в перемешку

пироженые и мороженые и тебе пофиг что ты от туда достанеш, ты вызываеш метод схавать. а уже реализация вызовется автоматом в

зависимости от того что достанешь

ууу:вот это полиморфизм

Соседние файлы в папке full sharp