![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Modus ponens
|
ОК, сейчас попробую объяснить...
Дано: суперкласс: Form наследники: TextForm, VideoForm и т.д. есть интерфейс, который имплементит часть наследников: IExtendedForm есть функция типа getTopmostForm():Form я не могу сделать ее getTopmostForm():IExtendedForm потому, что не все наследники Form имплементят IExtendedForm. Но, когда я пытаюсь сделать: IExtendedForm(getTopmostForm()), то получаю null -- и это очень обидно, принимая во внимание, что объект, который возвращает функция точно имплементит этот интерфейс =) Это даже скорее не вопрос... похоже, что ничего с этим не поделаешь, и так реализованы интерфейсы. Просто, если вдруг кто-то столкнется...
__________________
Hell is the possibility of sanity |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
getTopmostForm должен возвращать IForm, а IExtendedForm должен наследовать IForm .
|
|
|||||
|
Modus ponens
|
А что, в AS2 нельзя имплементить больше чем 1 интерфейс? вроде ж как можно... Т.е. мне совсем не нужно чтобы IExtendedForm наследовался от IForm... более того, может быть ситуация, когда его имплементит, скажем FormItem который вообще не связан с Form...
T.e. схема: Form FormItem
[implements IForm] [implements IFormItem]
| [implements IExtendedForm]
TextForm
[implements IForm, IExtendedForm]
FormManager.getTopmostForm():IForm
// иногда может вернуть и TextForm
// в таком случае я хочу его перекастовать в IExtendedForm
formInstane.getItem(....):IFormItem
// но иногда я могу другим способом получить объект,
// который обладает тем же функционалом.
и могу его перекастовать в
IExtendedForm(formInstane.getItem(....)).getProxy()
// сам интерфейс:
interface IExtendedForm
{
function getProxy():Proxy
}
// т.е. я знаю, что я могу вызвать следующие методы
// потому как оба класса имплементят нужный интерфейс
formItem.getProxy():Proxy
textForm.getProxy():Proxy
// но так я не могу, потому что getProxy() есть не у всех
// классов наследующихся от Form
form.getProxy():Proxy
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:03. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| extend , interface , superclass |
|
|