IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> ООП, Полиморфизм
Client
сообщение 15.02.2009 16:00
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Всем привет!
Начал изучать ООП и появились вопросы. Вроде с наследованием и инкапсуляцией понятно, а вот с полиморфизмом не понятно. Можете объяснить для чего он нужен и что такое виртуальные методы?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Client
сообщение 15.02.2009 18:34
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


uses crt;
type
ta = object
constructor init;
procedure print; virtual;
end;

constructor ta.init;
begin end;
procedure ta.print;
begin writeln('TA object') end;

procedure proc(var obj: ta);
begin
obj.print;
end;

type
ta2 = object(ta)
constructor init;
procedure print; virtual;
end;

constructor ta2.init;
begin end;
procedure ta2.print;
begin writeln('TA2 object') end;


type
tb = object(ta2)
constructor init;
procedure print; virtual;
end;

constructor tb.init;
begin {inherited init;} end;
procedure tb.print;
begin writeln('TB object') end;

var
A: ta;
B: tb;
c:ta2;
begin
clrscr;
a.init; proc(a);
b.init; proc(b);
c.init; proc©;
readkey
end.
Цитата
но подумай, что получится, если между TA и TB будет внесен еще один наследник
Добавил наследника, закоментировал
inherited init;
все равно работает О_о
если я правильно понял про наследника


Добавлено через 4 мин.
Упс... Там же по идеи должны присваиваться какие-то значения полям, но их нету. Если были бы, то не прокатило, да?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Client   ООП   15.02.2009 16:00
volvo   Ну, ты же здесь был: ООП. Объектно-ориентированное...   15.02.2009 16:19
Client   В наследовании есть родитель и потомок, где потомо...   15.02.2009 16:27
volvo   Не путай теплое с мягким... Наследование - это нео...   15.02.2009 17:01
Client   O_o незнал.procedure proc(var obj: ta); begin ob...   15.02.2009 17:16
volvo   Это вызов метода из непосредственного родителя... ...   15.02.2009 17:37
Client   uses crt; type ta = object constructor init;...   15.02.2009 18:34
volvo   Да, работает... Только некорректно это. При инициа...   15.02.2009 18:40
Client   Инициализация?? т.е. присваивание полям значений и...   15.02.2009 18:43
volvo   И то и другое... Вот, например, при инициализации ...   15.02.2009 19:37
Client   УРЯЯЯЯ!!! я понял) тут мы просто испол...   16.02.2009 16:22
volvo   Если ты про конструктор - то я тебе еще больше ска...   16.02.2009 19:04
Client   Вроде понял) Спасибо за ответы!   16.02.2009 20:29
fedyafed   Листинг программы от Дата 15.02.2009 17:01 содержи...   6.02.2011 10:25
volvo   Никак не нужно настраивать, он по умолчанию прекра...   6.02.2011 10:49
Гость   А overload и override компилятор не понимает(. Это...   6.02.2011 11:23


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.07.2025 10:21
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"