Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать в классе поле (по аналогии с абстрактными методами)? [D6, XP]


Sergp. ©   (2006-07-01 19:22:00) 

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

Допустим имеется:

TB=Class(TBB)
...
TB1=class(TB)
...
TB2=class(TB)
...
TA=class(TAA)
...

TA1=class(TA)
 public
   F:TB1;
   ...
 end;

TA2=class(TA)
 public
   F:TB2;
   ...
 end;

Можно ли с делать в классе TA поле F:TB, так чтобы можно было обращаться к объектам классов TA1 и TA2  как к TA, чтобы добраться до поля F для того чтобы использовать методы описанные в TB? И как?

Вобщем по аналогии как можно делать с методами, т.е. типа описывается класс с абстрактными методами, которые перекрываются в наследниках. А как сделать такое же с полями?


Жуков Олег   (2006-07-01 22:11:00) [1]

Вообще public поля не очень правильно использовать.
Сделай у предка свойство типа TB (НЕ ссылающееся на какое либо поле), и абстрактный метод его получения, в наследниках напиши реализацию.


SergP.   (2006-07-01 22:00:00) [2]

> [2] Жуков Олег   (01.07.06 20:14)
>
> > Объявить F: TB в классе TB, из TB1 и TB2 объявление убрать.
>
> - вместо "В" читать "A"


Да. Но TB1 и TB2 - разные классы, хоть и наследники одного. В принципе можно так сделать, но код будет некрасивым, т.е. при реализации классов TA1 и TA2 придется к F обращаться так: TB1(F) и TB2(F) (или (F as TB1) и (F as TB2))

А нельзя ли сделать так чтобы это поле было в родителе, а в наследниках перекрывалось (типа как перекрывают методы с помощью override) ?


Жуков Олег   (2006-07-01 20:14:00) [3]


> Объявить F: TB в классе TB, из TB1 и TB2 объявление убрать.

- вместо "В" читать "A"


Жуков Олег   (2006-07-01 20:10:00) [4]

Объявить F: TB в классе TB, из TB1 и TB2 объявление убрать.


Наверх

Титульная страница Поиск, карта сайта Написать письмо