Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Класс расширяющий Array (extends Array) (http://www.flasher.ru/forum/showthread.php?t=154325)

cpu 15.04.2011 21:18

Класс расширяющий Array (extends Array)
 
Решил создать класс расширяющий Array...
Код AS3:

public class MyClass extends Array {...}

Метод push нормально добавляет элементы, но вызвать из самого тела класса элемент таким образом
Код AS3:

trace(this[4]);

не получается...

Получается нет резона расширять подобные классы?

t4arty 15.04.2011 21:49

Вроде он не расширяемый, как и класс Math.

cpu 15.04.2011 22:02

Разобрался.
Из документации:
Код:

Класс Array можно расширить, переопределив или добавив методы. Однако этот подкласс необходимо сделать динамическим, чтобы не утратить возможность сохранения данных в массиве.
p.s. Дурацкая привычка беглым взглядом пробегаться по тексту документации..(

honest_man 15.04.2011 22:49

Цитата:

Сообщение от t4arty (Сообщение 989691)
Вроде он не расширяемый, как и класс Math.

Нет, ненаследуемым класс Math делает атрибуд final, класс Array таким атрибутом не обладает.

Добавлено через 6 минут
cpu, это естественно, ведь динамика не наследуется.

Котяра 16.04.2011 00:23

Math не наследуется по другой причине. т.к. там все методы статические, а статические методы не наследуются.
Цитата:

cpu, это естественно, ведь динамика не наследуется
в молоко. путаете мокрое с коричневым.

honest_man 16.04.2011 00:36

Цитата:

Сообщение от Котяра (Сообщение 989711)
Math не наследуется по другой причине. т.к. там все методы статические, а статические методы не наследуются.

Нет, не так, Math не наследуется потому что объявлен с атрибутом final, а с атрибутом final он объявлен потому что содержит только статические методы... Не думаю что сами по себе статические методы помешали бы формально расширить класс. Не путайте следствие и следствие следствия! ;) Причина - final.

fish_r 16.04.2011 00:56

Цитата:

Сообщение от honest_man (Сообщение 989717)
Нет, не так, Math не наследуется потому что объявлен с атрибутом final, а с атрибутом final он объявлен потому что содержит только статические методы... Не думаю что сами по себе статические методы помешали бы формально расширить класс. Не путайте следствие и следствие следствия! ;) Причина - final.

Чо спорить? Попробуйте отнаследоваться от класса со стат. методами.

Добавлено через 1 минуту
Final просто предупреждает вас, что наследоваться от него нет смысла

honest_man 16.04.2011 01:11

Предупреждает? ну... я бы скорее назвал это ярым запретом =) Ладно пусть так, я не прав был, атрибут final не мешает наследовать классы, это мешают делать статические переменные, простите меня, неуча

fish_r 16.04.2011 01:17

Угу, из области "стакан наполовину пуст/ стакан наполовину полон"...

Котяра 16.04.2011 01:30

Ну вообще-то про final был частично неправ. Действительно не даёт наследоваться из-за final, но отсутствие необходимости и хоть какого нибудь смысла в наследовании от Math, как раз в том, что все методы там статические.


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

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