![]() |
Как вызвать непереопределенный метод в базовом классе
В соседней ветке речь зашла про super, и там меня похоже не совсем правильно поняли.
Поэтому, чтобы не усложнять пример 2мя классами, рассмотрю вариант только с одним, базовым. Есть класс, есть в нем объявленный метод methodA, который может быть переопределен наследником. Как мне в базовом классе вызвать без обходных путей непереопределенный метод methodA? Вызываю super.methodA(), а в трэйс вываливается ран-тайм ошибка. Может я в чем то ошибся? Или это так и задумано? код вызова: Код AS3:
Код AS3:
Цитата:
|
Сейчас попробовать не могу, но может вот так:
Код AS3:
Думаю надо в этом направлении думать. |
Спасибо. Просто думаю это как раз один из обходных путей. Хочется узнать почему простого super.methodA() недостаточно
Так то и так можно организовать, и тоже все гуд будет: Код AS3:
|
Цитата:
Вот он тебе и пишет в эксепшене что у Object нет такого метода. Вообщем помоему постановка задачи какая то кривая очень, раз нет никакого наследования здесь - к чему тогда вообще super и всё подобное. |
Можно так, но это как то не красиво :(
Код AS3:
|
Что тут происходит, расскажите мне))
Ну или расскажите, что принять нужно, чтобы это понять?) Цитата:
|
Цитата:
Вот с наследованием. Как мне вызвать непереопределленный метод суперкласса из самого же суперкласса? код: Код AS3:
Код AS3:
Код AS3:
Цитата:
Почему при вызове super.methodA(); лезет в Object, если суперкласс метода - это ClassA? |
cauchy, если у Вас есть объект класса ClassA то при вызове methodA_super (такое же тоже возможно) он вернет methodA. В обратном случае класс будет вызывать свойство methodA_super своего суперкласса, таким образом рекурсивно добираясь до класса который непосредственно расширяет ClassA. Но метод предложенный i.o. намного лучше.
|
incvizitor, похоже вы перепутали getDefinitionByName() с getQualifiedClassName().
В общем подставил, ничего не изменилось. Помнится wvxvw любит использовать super. Он наверняка знает ответ ) |
Да, перепутал :) Ну не знаю, я написал:
Код AS3:
Код AS3:
|
| Часовой пояс GMT +4, время: 13:43. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.