Главная страница
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.04 c
2-1151658907
alekslep
2006-06-30 13:15
2006.07.23
вложенные циклы.... непонятка...


2-1152001604
muha89
2006-07-04 12:26
2006.07.23
Как запустить какую-нибуть процедуру


15-1150808033
syte_ser78
2006-06-20 16:53
2006.07.23
Абзац в Word


2-1151993523
Urvin
2006-07-04 10:12
2006.07.23
статическая переменная?


15-1150880370
Layner
2006-06-21 12:59
2006.07.23
Отправка SMS от любого номера