Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 13
На сайте нет зарегистрированных пользователей

Пользователей: 13,370
новичок: dogoco6
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Обучающая и тестирующая программа по здаче экзамена ПДД на Turbo Pascal ...
Диплом RSA, ЭЦП, сертификаты, шифрование на C#
Моделирование информационно-поисковой библиографической системы на gpss ...

Основные понятия ООП. Полиморфизм и виртуальные методы
Полиморфизм — это возможность использовать одинаковые имена для методов, входящих в различные классы.
Концепция полиморфизма обеспечивает при применении метода к объекту использование именно того метода, который соответствует классу объекта.
Пусть определены три класса, один из них является базовым для двух других:
type
// базовый класс
TPerson=class
fname:string;{ имя }
constructor Create(name:string);
function info: string; virtual;
end;
// производный от базового TPerson
TStud=class(TPerson)
fgr:integer; { номер группы }
constructor Create(name:string;gr:integer);
function info: string; override;
end;
// производный от базового TPerson
TProf=class(TPerson)
fdep:string; { название кафедры }
constructor Create(name:string;dep:string);
function info: string; override;
end;



В каждом из этих классов определен метод info. В базовом классе с помощью директивы virtual метод info объявлен виртуальным. Объявление метода виртуальным дает возможность дочернему классу произвести замену виртуального метода своим собственным. В каждом дочернем классе определен свой метод info, который замещает соответствующий метод родительского класса. При этом метод порожденного класса, замещающий виртуальный метод родительского класса, помечается директивой override. Ниже приведено определение метода info для каждого класса.

function TPerson.info:string;
begin
result:=’’;
end;

function TStud.info:string;
begin
result:=fname+' гp.'+IntTostr(fgr);
end;

function TProf.info:string;
begin
result:=fname+'каф.'+fdep;
end;



В программе список людей можно представить массивом объектов класса TPerson, например
1ist:array[1..SZL] of TPerson; // SZL — размер массива



Здесь следует отметить, что объект list— это массив указателей. Объявить подобным образом список можно потому, что Object Pascal позволяет указателю на родительский класс присвоить значение указателя на дочерний класс. Поэтому элементами массива list могут быть как объекты класса TStud, так и объекты класса TProf.
Вывод списка можно осуществить применением метода info к элементам массива, например, так:
st:=’’;
for i:=l to SZL do
if list[i] <> NIL
then st:=st+info.list[i]+#13;
ShowMessage(st);



Во время работы программы каждый элемент массива может содержать как объект типа TStud, так и объект типа TProf. Концепция полиморфизма обеспечивает возможность применения к объекту именно того метода, который соответствует типу объекта.









Опубликовал Kest December 21 2009 14:02:22 · 0 Комментариев · 18239 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Разработка Web-пр...
Прграммирование в...
ProLIB18
Векторный редакто...
Animation (Пример...
Java 2 - Эффектив...
около 291 статьи ...
Crypt32
iChat v.7.0 Final...
SODA [Исходник на...
База для Allsubmi...
Х. М. Дейтел, П. ...
Ehlib
Atb
Панель "Случайное...
CaptionButton
ИНТЕРНЕТ ПРОГРАММ...
Андрей Боровский....
Программирование ...
Delphix Sample [И...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97836
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10291
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Существуют два осн...
Заметим, что проце...
Цель — проиллюстри...
Решения к главе 11
Загрузка файлов CM...
Припаиваем светодиод
Маски подсети пере...
Семантика UNIX 445
Что часто является...
11.1. Простые про...
Комплексные числа
Ключевые слова
Главная идея Томпсона
— издание 381— авт...
Содержание
Подготовка и публи...
Совмещение имен в IDL
Нарушения правильн...
Онлайн-казино все...
Field Identifier e...
стр. 445 Ответы на...
Playstation 2
Кодирование видеоп...
Выбор ключевых слов
Буферизация
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?