Главная страница
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.027 c
2-1151902669
Прогер
2006-07-03 08:57
2006.07.23
Unicode


15-1150772854
sff
2006-06-20 07:07
2006.07.23
Цена ТР


15-1150959249
Карелин Артем
2006-06-22 10:54
2006.07.23
Дайте идею как корректно вписать длинную строку в ячейки Excel


2-1151896293
Kobik..
2006-07-03 07:11
2006.07.23
Разбивание RGB на R, G и B. Скорость.


2-1151945749
slon2k
2006-07-03 20:55
2006.07.23
array of byte to string