Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.23;
Скачать: CL | DM;

Вниз

Как сделать в классе поле (по аналогии с абстрактными методами)?   Найти похожие ветки 

 
Sergp.   (2006-07-01 19:22) [0]

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

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

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 20:10) [1]

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


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


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

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


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

> [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 22:11) [4]

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



Страницы: 1 вся ветка

Текущий архив: 2006.07.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.026 c
2-1151866361
flaxe
2006-07-02 22:52
2006.07.23
Многомерный массив в файл


4-1144749116
slaga
2006-04-11 13:51
2006.07.23
Как получить Handle окна ?


15-1150922919
JUS
2006-06-22 00:48
2006.07.23
Игроделы


3-1148137898
wirg
2006-05-20 19:11
2006.07.23
Подскажите как исправить название в заголовке Грида


15-1150971029
Rentgen
2006-06-22 14:10
2006.07.23
Компонент-печать-мм