![]() |
Предок не приводится к наследнику. Почему?
Хочу расширить Array. Почитал Мука, посмотрел хелп. Сделал так:
Код AS3:
Код AS3:
и в чем разница ... as MyArray и MyArray (...) ? |
Код AS3:
Код AS3:
Код AS3:
Добавлено через 5 минут Цитата:
например если сделаешь вот так: Код AS3:
Код:
1. [null, null, 2, 3]Код AS3:
Код:
1. [null, null, 2, 3] |
Спасибо за помощь!
Немного переделал, теперь у меня так: Код AS3:
|
Простите, а с чего массив должен реализовывать методы, объявленные в его наследнике? Вы пишете var arr:MyArray = new Array(). Array не наследует поведение MyArray, в то время как MyArray поведение Array — наследует. Следовательно, вот так будет работать: var arr:Array = new MyArray(); а так: var arr:MyArray = new Array() — нет.
|
Простите, а с чего массив должен реализовывать методы, объявленные в его наследнике?
Ну, я подумал, а почему бы за кулисами при приведении массива к моему массиву автоматом не прикручивались бы дополнительные методы. Ведь переменных экземпляра я не объявлял. |
Код AS3:
|
Потому, что нельзя
Потому, что это противоречит концепции ООП. Предок в принципе не может приводиться к наследнику. А сделать так, как вы желаете нельзя.
Код AS3:
|
Код AS3:
Код AS3:
|
Цитата:
Код AS3:
Цитата:
Добавлено через 10 минут Цитата:
|
Цитата:
|
Цитата:
Только с одним условием, оператор new использовать обязательно. Неявная инстанциация как в случае с массивом не получится. |
@Dukobpa3, что такое "неявная инстанциация"?
|
хз))) сам придумал.
Короче инстанциировать в любом случае надо руками, это всё что я хотел сказать. |
Не... Я про new понял.
А как Flash догадается привести к типу Array? Если у нас, например, класс наследовал бы другой класс без индексатора, как бы себя повёл код: Код AS3:
|
Если класс динамик, то создаст поле с именем указанным в скобочках
Только не знаю как оно себя поведет если будет число, но во всяком случае если динамик классу сделать: Код AS3:
Ну а если класс не динамик, будет материться на невозможность создать поле в статическом классе. Добавлено через 2 минуты Собственно поэтому класс расширяющий Array у нас динамический, ибо ему поля постоянно новые добавляются, с индексами. |
Цитата:
Код AS3:
|
Цитата:
И какая от них польза? Даёт прирост оптимизации? |
Блин, учите матчасть, это же основы....
Тут в этом разделе есть ссылки на хелпы, в том числе и на русский, который собственно я и читал некоторое время назад... Статические классы по умолчанию, для динамик класса нужно слово "dynamic" указывать. Кроме динамика есть еще три вида классов. Это и много другое можно прочесть в упомянутых мануалах, не ленитесь. |
| Часовой пояс GMT +4, время: 22:21. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.