Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.013 c
2-1152015126
Ищущий.
2006-07-04 16:12
2006.07.23
изменение положения минимизированных окон


2-1151871971
Deny20
2006-07-03 00:26
2006.07.23
Мастера, что нихто не делал печать с задание полей страницы


6-1142575428
syst3m_3rror
2006-03-17 09:03
2006.07.23
MAC-адрес


15-1150953186
Rentgen
2006-06-22 09:13
2006.07.23
установить GLOBUS VCL на D2006.


2-1151747491
mfender
2006-07-01 13:51
2006.07.23
Access Violations в TTreeView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский