Форум: "Начинающим";
Текущий архив: 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.014 c