Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Вызов переопределенного метода класса (http://www.flasher.ru/forum/showthread.php?t=106317)

nyctota 09.01.2008 12:41

Вызов переопределенного метода класса
 
Есть классы (для примера приведены совершенно бесполезные):
Код:

class A {
        public static function init()
        {
                trace("A --> init");
                A.invokeMe();
        }
        private static function invokeMe()
        {
                trace("A --> invokeMe()");
        }
}

и расширяющий его
Код:

class B extends A {
        public static function init()
        {
                trace("B --> init");
                B.invokeMe();
        }
        private static function invokeMe()
        {
                trace("B --> invokeMe()");
        }
}

Если вызвать метод init() класса B, то почему-то вызывается метод invokeMe() надкласса, то есть:
Код:

B.init();
выдает trace:
Код:

B --> init
A --> invokeMe()

При этом замечено, что если в классе B вызывать метод invokeMe() без конкретного указания класса, то все происходит как должно быть.

В растерянности =/ Разъясните ситуацию, пожалуйста.

etc 09.01.2008 13:03

Глюк компилятора, если классы переписать заново, то все работает.

nyctota 09.01.2008 13:14

Ээээ... просто взять создать новый файл, скопировать туда код класса (кстати говоря, обоих, или достаточно подкласса?) и все?

Или ручками переписать? Радостная новость: класс-то чуток побольше, чем тут представлен.

UPDATE: вроде переписал — не помогло =/

iNils 09.01.2008 18:48

Да, глюк имеет место быть.
Поменял порядок описания методов в B c

init
invokeMe

на

invokeMe
init

Помогло.

nyctota 19.01.2008 02:58

Подтверждаю. Мистика, но помогает. Спасибо.


Часовой пояс GMT +4, время: 11:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.